From 9d4a44e7137fba2c7ca2823174ba1168290a1c3b Mon Sep 17 00:00:00 2001 From: Aurelien DARRAGON Date: Mon, 13 May 2024 16:24:10 +0200 Subject: [PATCH] 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. --- src/log.c | 1 + 1 file changed, 1 insertion(+) 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; } -- 2.47.2