MINOR: cfgparse: use a common errmsg pointer for all parsers

In order to generalize the simplified error reporting mechanism, let's
centralize the error pointer.
diff --git a/src/cfgparse.c b/src/cfgparse.c
index e4ee9a0..7e8e7d5 100644
--- a/src/cfgparse.c
+++ b/src/cfgparse.c
@@ -1110,7 +1110,6 @@
 		if ((cond = build_acl_cond(file, line, px, cond_start, &errmsg)) == NULL) {
 			Alert("parsing [%s:%d] : error detected while parsing a '%s' condition : %s.\n",
 			      file, line, cmd, errmsg);
-			free(errmsg);
 			err_code |= ERR_ALERT | ERR_FATAL;
 			goto err;
 		}
@@ -1152,8 +1151,10 @@
 	if (dir == SMP_OPT_DIR_REQ && warnif_misplaced_reqxxx(px, file, line, cmd))
 		err_code |= ERR_WARN;
 
+	free(errmsg);
 	return err_code;
  err:
+	free(errmsg);
 	free(preg);
 	return err_code;
 }
@@ -1337,6 +1338,7 @@
 	struct acl_cond *cond = NULL;
 	struct logsrv *tmplogsrv;
 	struct logformat_node *tmplf;
+	char *errmsg = NULL;
 
 	if (!strcmp(args[0], "listen"))
 		rc = PR_CAP_LISTEN;
@@ -2084,8 +2086,6 @@
 		curproxy->bind_proc = set;
 	}
 	else if (!strcmp(args[0], "acl")) {  /* add an ACL */
-		char *errmsg = NULL;
-
 		if (curproxy == &defproxy) {
 			Alert("parsing [%s:%d] : '%s' not allowed in 'defaults' section.\n", file, linenum, args[0]);
 			err_code |= ERR_ALERT | ERR_FATAL;
@@ -2102,7 +2102,6 @@
 		if (parse_acl((const char **)args + 1, &curproxy->acl, &errmsg) == NULL) {
 			Alert("parsing [%s:%d] : error detected while parsing ACL '%s' : %s.\n",
 			      file, linenum, args[1], errmsg);
-			free(errmsg);
 			err_code |= ERR_ALERT | ERR_FATAL;
 			goto out;
 		}
@@ -2521,8 +2520,6 @@
 		curproxy->server_id_hdr_len  = strlen(curproxy->server_id_hdr_name);
 	}
 	else if (!strcmp(args[0], "block")) {  /* early blocking based on ACLs */
-		char *errmsg = NULL;
-
 		if (curproxy == &defproxy) {
 			Alert("parsing [%s:%d] : '%s' not allowed in 'defaults' section.\n", file, linenum, args[0]);
 			err_code |= ERR_ALERT | ERR_FATAL;
@@ -2539,7 +2536,6 @@
 		if ((cond = build_acl_cond(file, linenum, curproxy, (const char **)args + 1, &errmsg)) == NULL) {
 			Alert("parsing [%s:%d] : error detected while parsing blocking condition : %s.\n",
 			      file, linenum, errmsg);
-			free(errmsg);
 			err_code |= ERR_ALERT | ERR_FATAL;
 			goto out;
 		}
@@ -2637,13 +2633,10 @@
 			}
 			else if (strcmp(args[cur_arg], "if") == 0 ||
 				 strcmp(args[cur_arg], "unless") == 0) {
-				char *errmsg = NULL;
-
 				cond = build_acl_cond(file, linenum, curproxy, (const char **)args + cur_arg, &errmsg);
 				if (!cond) {
 					Alert("parsing [%s:%d] : '%s': error detected while parsing redirect condition : %s.\n",
 					      file, linenum, args[0], errmsg);
-					free(errmsg);
 					err_code |= ERR_ALERT | ERR_FATAL;
 					goto out;
 				}
@@ -2696,7 +2689,6 @@
 	}
 	else if (!strcmp(args[0], "use_backend")) {
 		struct switching_rule *rule;
-		char *errmsg = NULL;
 
 		if (curproxy == &defproxy) {
 			Alert("parsing [%s:%d] : '%s' not allowed in 'defaults' section.\n", file, linenum, args[0]);
@@ -2723,7 +2715,6 @@
 		if ((cond = build_acl_cond(file, linenum, curproxy, (const char **)args + 2, &errmsg)) == NULL) {
 			Alert("parsing [%s:%d] : error detected while parsing switching rule : %s.\n",
 			      file, linenum, errmsg);
-			free(errmsg);
 			err_code |= ERR_ALERT | ERR_FATAL;
 			goto out;
 		}
@@ -2738,7 +2729,6 @@
 	}
 	else if (strcmp(args[0], "use-server") == 0) {
 		struct server_rule *rule;
-		char *errmsg = NULL;
 
 		if (curproxy == &defproxy) {
 			Alert("parsing [%s:%d] : '%s' not allowed in 'defaults' section.\n", file, linenum, args[0]);
@@ -2765,7 +2755,6 @@
 		if ((cond = build_acl_cond(file, linenum, curproxy, (const char **)args + 2, &errmsg)) == NULL) {
 			Alert("parsing [%s:%d] : error detected while parsing switching rule : %s.\n",
 			      file, linenum, errmsg);
-			free(errmsg);
 			err_code |= ERR_ALERT | ERR_FATAL;
 			goto out;
 		}
@@ -2782,7 +2771,6 @@
 	else if ((!strcmp(args[0], "force-persist")) ||
 		 (!strcmp(args[0], "ignore-persist"))) {
 		struct persist_rule *rule;
-		char *errmsg = NULL;
 
 		if (curproxy == &defproxy) {
 			Alert("parsing [%s:%d] : '%s' not allowed in 'defaults' section.\n", file, linenum, args[0]);
@@ -2803,7 +2791,6 @@
 		if ((cond = build_acl_cond(file, linenum, curproxy, (const char **)args + 1, &errmsg)) == NULL) {
 			Alert("parsing [%s:%d] : error detected while parsing a '%s' rule : %s.\n",
 			      file, linenum, args[0], errmsg);
-			free(errmsg);
 			err_code |= ERR_ALERT | ERR_FATAL;
 			goto out;
 		}
@@ -2979,7 +2966,6 @@
 		struct sticking_rule *rule;
 		struct sample_expr *expr;
 		int myidx = 0;
-		char *errmsg = NULL;
 		const char *name = NULL;
 		int flags;
 
@@ -3058,7 +3044,6 @@
 			if ((cond = build_acl_cond(file, linenum, curproxy, (const char **)args + myidx, &errmsg)) == NULL) {
 				Alert("parsing [%s:%d] : '%s': error detected while parsing sticking condition : %s.\n",
 				      file, linenum, args[0], errmsg);
-				free(errmsg);
 				err_code |= ERR_ALERT | ERR_FATAL;
 				free(expr);
 				goto out;
@@ -3098,7 +3083,6 @@
 			goto stats_error_parsing;
 		} else if (!strcmp(args[1], "admin")) {
 			struct stats_admin_rule *rule;
-			char *errmsg = NULL;
 
 			if (curproxy == &defproxy) {
 				Alert("parsing [%s:%d]: '%s %s' not allowed in 'defaults' section.\n", file, linenum, args[0], args[1]);
@@ -3121,7 +3105,6 @@
 			if ((cond = build_acl_cond(file, linenum, curproxy, (const char **)args + 2, &errmsg)) == NULL) {
 				Alert("parsing [%s:%d] : error detected while parsing a '%s %s' rule : %s.\n",
 				      file, linenum, args[0], args[1], errmsg);
-				free(errmsg);
 				err_code |= ERR_ALERT | ERR_FATAL;
 				goto out;
 			}
@@ -3876,8 +3859,6 @@
 			err_code |= ERR_WARN;
 
 		if (strcmp(args[1], "fail") == 0) {
-			char *errmsg = NULL;
-
 			/* add a condition to fail monitor requests */
 			if (strcmp(args[2], "if") != 0 && strcmp(args[2], "unless") != 0) {
 				Alert("parsing [%s:%d] : '%s %s' requires either 'if' or 'unless' followed by a condition.\n",
@@ -3889,7 +3870,6 @@
 			if ((cond = build_acl_cond(file, linenum, curproxy, (const char **)args + 2, &errmsg)) == NULL) {
 				Alert("parsing [%s:%d] : error detected while parsing a '%s %s' condition : %s.\n",
 				      file, linenum, args[0], args[1], errmsg);
-				free(errmsg);
 				err_code |= ERR_ALERT | ERR_FATAL;
 				goto out;
 			}
@@ -5028,7 +5008,6 @@
 	}
 	else if (!strcmp(args[0], "reqadd")) {  /* add request header */
 		struct cond_wordlist *wl;
-		char *errmsg = NULL;
 
 		if (curproxy == &defproxy) {
 			Alert("parsing [%s:%d] : '%s' not allowed in 'defaults' section.\n", file, linenum, args[0]);
@@ -5048,7 +5027,6 @@
 			if ((cond = build_acl_cond(file, linenum, curproxy, (const char **)args+2, &errmsg)) == NULL) {
 				Alert("parsing [%s:%d] : error detected while parsing a '%s' condition : %s.\n",
 				      file, linenum, args[0], errmsg);
-				free(errmsg);
 				err_code |= ERR_ALERT | ERR_FATAL;
 				goto out;
 			}
@@ -5125,7 +5103,6 @@
 	}
 	else if (!strcmp(args[0], "rspadd")) {  /* add response header */
 		struct cond_wordlist *wl;
-		char *errmsg = NULL;
 
 		if (curproxy == &defproxy) {
 			Alert("parsing [%s:%d] : '%s' not allowed in 'defaults' section.\n", file, linenum, args[0]);
@@ -5145,7 +5122,6 @@
 			if ((cond = build_acl_cond(file, linenum, curproxy, (const char **)args+2, &errmsg)) == NULL) {
 				Alert("parsing [%s:%d] : error detected while parsing a '%s' condition : %s.\n",
 				      file, linenum, args[0], errmsg);
-				free(errmsg);
 				err_code |= ERR_ALERT | ERR_FATAL;
 				goto out;
 			}
@@ -5295,6 +5271,7 @@
 		goto out;
 	}
  out:
+	free(errmsg);
 	return err_code;
 }