From: Willy Tarreau Date: Thu, 2 Sep 2021 16:46:22 +0000 (+0200) Subject: BUG/MINOR: vars: fix set-var/unset-var exclusivity in the keyword parser X-Git-Tag: v2.5-dev6~17 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2819210a8328ff60505e499acf9f8bc323bec840;p=thirdparty%2Fhaproxy.git BUG/MINOR: vars: fix set-var/unset-var exclusivity in the keyword parser The parser checks first for "set-var" then "unset-var" from the updated offset instead of testing it only when the other one fails, so it validates this rule as "unset-var": http-request set-varunset-var(proc.a) This should be backported everywhere relevant, though it's mostly harmless as it's unlikely that some users are purposely writing this in their conf! --- diff --git a/src/vars.c b/src/vars.c index 5b35aa391b..d533b180ad 100644 --- a/src/vars.c +++ b/src/vars.c @@ -736,11 +736,11 @@ static enum act_parse_ret parse_store(const char **args, int *arg, struct proxy const char *kw_name; int flags, set_var = 0; - if (!strncmp(var_name, "set-var", 7)) { + if (strncmp(var_name, "set-var", 7) == 0) { var_name += 7; set_var = 1; } - if (!strncmp(var_name, "unset-var", 9)) { + else if (strncmp(var_name, "unset-var", 9) == 0) { var_name += 9; set_var = 0; }