]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: sample: fix memory leak in check_when_cond() when ACL is not found
authorWilly Tarreau <w@1wt.eu>
Sun, 26 Apr 2026 21:49:35 +0000 (23:49 +0200)
committerWilly Tarreau <w@1wt.eu>
Mon, 27 Apr 2026 12:44:29 +0000 (14:44 +0200)
When find_acl_by_name() and find_acl_default() both fail when parsing
converter "when(ACL,foo)", the previously allocated acl_sample struct
is leaked. Free it before returning 0. This can be backported to stable
versions.

src/sample.c

index 80cd9300817389675dcaa5f4c239ce53724ef033..b6ec6ec77216891f0d03d5f74f2b5ca9ff180aee 100644 (file)
@@ -4114,6 +4114,7 @@ static int check_when_cond(struct arg *args, struct sample_conv *conv,
                if (!(acl_sample->terms[0].acl = find_acl_by_name(args[1].data.str.area, &curproxy->acl)) &&
                    !(acl_sample->terms[0].acl = find_acl_default(args[1].data.str.area, &curproxy->acl, err, NULL, NULL, 0))) {
                        memprintf(err, "ACL '%s' not found", args[1].data.str.area);
+                       free(acl_sample);
                        return 0;
                }