From: Aurelien DARRAGON Date: Mon, 13 May 2024 14:24:10 +0000 (+0200) Subject: BUG/MINOR: log: fix leak in add_sample_to_logformat_list() error path X-Git-Tag: v3.0-dev12~53 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9d4a44e7137fba2c7ca2823174ba1168290a1c3b;p=thirdparty%2Fhaproxy.git BUG/MINOR: log: fix leak in add_sample_to_logformat_list() error path If add_sample_to_logformat_list() fails to allocate new logformat_node, then we directly jump to error_free label to cleanup the node using free_logformat_node() before returning an error. However if the node failed to allocate, then the sample expression that was allocated just before (not yet assigned) isn't released (free_logformat_node() is a no-op when NULL is provided). Thus if expr wasn't assigned to the node during early failure, then it must be manually released. This bug was introduced by 2462e5bcc ("BUG/MINOR: log: fix potential lf->name memory leak") which wasn't marked for backports. It only affects 3.0. --- diff --git a/src/log.c b/src/log.c index 8cc4879967..5ae0ec0ea2 100644 --- a/src/log.c +++ b/src/log.c @@ -547,6 +547,7 @@ static int add_sample_to_logformat_list(char *text, char *name, int name_len, in node = calloc(1, sizeof(*node)); if (!node) { + release_sample_expr(expr); memprintf(err, "out of memory error"); goto error_free; }