BUG/MINOR: flt-trace: Support only one name option
authorChristopher Faulet <cfaulet@haproxy.com>
Thu, 6 Feb 2025 16:01:08 +0000 (17:01 +0100)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Tue, 18 Mar 2025 14:59:30 +0000 (15:59 +0100)
When a trace filter is defined, only one 'name' option is expected. But it
was not tested. Thus it was possible to set several names leading to a
memory leak.

It is now tested, and it is not allowed to redefine the trace filter name.

It was reported by Coverity in #2841: CID 1587768.

This patch could be backported to all stable versions.

(cherry picked from commit b20e2c96cfea06776db3200614f6d94441f15c2d)
Signed-off-by: Willy Tarreau <w@1wt.eu>
(cherry picked from commit e3e565a556ce960ac47f4495687a0bbda38ae160)
Signed-off-by: Amaury Denoyelle <adenoyelle@haproxy.com>

src/flt_trace.c

index bbadfe2..3703ded 100644 (file)
@@ -631,6 +631,11 @@ parse_trace_flt(char **args, int *cur_arg, struct proxy *px,
                                                  args[*cur_arg], args[pos]);
                                        goto error;
                                }
+                               if (conf->name) {
+                                       memprintf(err, "'%s' : '%s' option already defined",
+                                                 args[*cur_arg], args[pos]);
+                                       goto error;
+                               }
                                conf->name = strdup(args[pos + 1]);
                                if (!conf->name) {
                                        memprintf(err, "%s: out of memory", args[*cur_arg]);