]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: vars: fix set-var/unset-var exclusivity in the keyword parser
authorWilly Tarreau <w@1wt.eu>
Thu, 2 Sep 2021 16:46:22 +0000 (18:46 +0200)
committerWilly Tarreau <w@1wt.eu>
Thu, 2 Sep 2021 16:46:22 +0000 (18:46 +0200)
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!

src/vars.c

index 5b35aa391b15d39a388185a004557ccb97153857..d533b180addc86bfe6f07346b36be8ed56f76843 100644 (file)
@@ -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;
        }