From 44eef1b3b566ec73a6d242ca347e6b6111dfabaa Mon Sep 17 00:00:00 2001 From: Aurelien DARRAGON Date: Tue, 7 Feb 2023 15:51:58 +0100 Subject: [PATCH] BUG/MINOR: protocol: fix minor memory leak in protocol_bind_all() In protocol_bind_all() (involved in startup sequence): We only free errmsg (set by fam->bind() attempt) when we make use of it. But this could lead to some memory leaks because there are some cases where we ignore the error message (e.g: verbose=0 with ERR_WARN messages). As long as errmsg is set, we should always free it. As mentioned earlier, this really is a minor leak because it can only occur on specific conditions (error paths) during the startup phase. This may be backported up to 2.4. -- Backport notes: -> 2.4 only: Replace this: | ha_warning("Binding [%s:%d] for %s %s: %s\n", | listener->bind_conf->file, listener->bind_conf->line, | proxy_type_str(px), px->id, errmsg); By this: | else if (lerr & ERR_WARN) | ha_warning("Starting %s %s: %s\n", | proxy_type_str(px), px->id, errmsg); (cherry picked from commit 8429627e3c2eb472dc94ec8d3d7275ef68a79128) Signed-off-by: Willy Tarreau (cherry picked from commit da9a15ff0326d59ba38f5a1b258820d91c7df649) Signed-off-by: Christopher Faulet Conflict: NA Reference: https://git.haproxy.org/?p=haproxy-2.6.git;a=commit;h=44eef1b3b566ec73a6d242ca347e6b6111dfabaa --- src/protocol.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/protocol.c b/src/protocol.c index 03f708591..146733a3f 100644 --- a/src/protocol.c +++ b/src/protocol.c @@ -92,8 +92,10 @@ int protocol_bind_all(int verbose) ha_warning("Binding [%s:%d] for %s %s: %s\n", listener->bind_conf->file, listener->bind_conf->line, proxy_type_str(px), px->id, errmsg); - ha_free(&errmsg); } + if (lerr != ERR_NONE) + ha_free(&errmsg); + if (lerr & ERR_ABORT) break; -- 2.33.0