]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: cfgparse-tcp: leak when re-declaring interface from bind line
authorAurelien DARRAGON <adarragon@haproxy.com>
Thu, 1 Jun 2023 07:57:15 +0000 (09:57 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Tue, 6 Jun 2023 13:15:17 +0000 (15:15 +0200)
When interface keyword is used multiple times within the same bind line,
the previous value isn't checked and is rewritten as-is, resulting in a
small memory leak.

Ensuring the interface name is first freed before assigning it to a new
value.

This may be backported to every stable versions.

[Note for 2.2, the fix must be performed in bind_parse_interface() from
proto_tcp.c, directly within the listener's loop, also ha_free() was
not available so free() must be used instead]

src/cfgparse-tcp.c

index d753e64e5a387ca57ba0541fde024faa4dddc8fa..a4f6f29af5d5934e60ef460fbf9f8aefe8472a63 100644 (file)
@@ -142,6 +142,7 @@ static int bind_parse_interface(char **args, int cur_arg, struct proxy *px, stru
                return ERR_ALERT | ERR_FATAL;
        }
 
+       ha_free(&conf->settings.interface);
        conf->settings.interface = strdup(args[cur_arg + 1]);
        return 0;
 }