BUG/MEDIUM: vars: run over the correct list in release_store_rules()
authorWilly Tarreau <w@1wt.eu>
Fri, 3 Sep 2021 08:58:07 +0000 (10:58 +0200)
committerWilly Tarreau <w@1wt.eu>
Fri, 3 Sep 2021 09:01:12 +0000 (11:01 +0200)
In commit 9a621ae76 ("MEDIUM: vars: add a new "set-var-fmt" action")
we introduced the support for format strings in variables with the
ability to release them on exit, except that it's the wrong list that
was being scanned for the rule (http vs vars), resulting in random
crashes during deinit.

This was a recent commit in 2.5-dev, no backport is needed.

src/vars.c

index bf53d87..85c6fc4 100644 (file)
@@ -724,7 +724,8 @@ static enum act_return action_clear(struct act_rule *rule, struct proxy *px,
 static void release_store_rule(struct act_rule *rule)
 {
        struct logformat_node *lf, *lfb;
-       list_for_each_entry_safe(lf, lfb, &rule->arg.http.fmt, list) {
+
+       list_for_each_entry_safe(lf, lfb, &rule->arg.vars.fmt, list) {
                LIST_DELETE(&lf->list);
                release_sample_expr(lf->expr);
                free(lf->arg);