From: Aurelien DARRAGON Date: Wed, 28 Feb 2024 18:29:27 +0000 (+0100) Subject: BUG/MINOR: cfgparse: report proper location for log-format-sd errors X-Git-Tag: v3.0-dev5~13 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=cf37e4cc1b8c63c437c6825d2e70588a6ccb8847;p=thirdparty%2Fhaproxy.git BUG/MINOR: cfgparse: report proper location for log-format-sd errors When a parsing error occurs inside a log-format-sd expression, we report the location of the log-format directive (which may not be set) instead of reporting the proper log-format-sd directive location where the parsing error occured. 1|listen test 2| log-format "%B" # no error 3| log-format-sd "%bad" # error | [ALERT] (322261) : config : Parsing [empty.conf:2]: failed to parse log-format-sd : no such format variable 'bad'. If you wanted to emit the '%' character verbatim, you need to use '%%'. The fix consists in using the config hints dedicated to log-format-sd directive instead of the log-format one. The bug was introduced in 8a4e4420 ("MEDIUM: log-format: Use standard HAProxy log system to report errors"). This should be backported to every stable versions. --- diff --git a/src/cfgparse.c b/src/cfgparse.c index 4d4d12cd9a..e9e4e8a7ee 100644 --- a/src/cfgparse.c +++ b/src/cfgparse.c @@ -3435,12 +3435,12 @@ out_uri_auth_compat: LOG_OPT_MANDATORY|LOG_OPT_MERGE_SPACES, SMP_VAL_FE_LOG_END, &err)) { ha_alert("Parsing [%s:%d]: failed to parse log-format-sd : %s.\n", - curproxy->conf.lfs_file, curproxy->conf.lfs_line, err); + curproxy->conf.lfsd_file, curproxy->conf.lfsd_line, err); free(err); cfgerr++; } else if (!add_to_logformat_list(NULL, NULL, LF_SEPARATOR, &curproxy->logformat_sd, &err)) { ha_alert("Parsing [%s:%d]: failed to parse log-format-sd : %s.\n", - curproxy->conf.lfs_file, curproxy->conf.lfs_line, err); + curproxy->conf.lfsd_file, curproxy->conf.lfsd_line, err); free(err); cfgerr++; }