From 78edc96b1063f00202c25217c14f505b05fbd6a6 Mon Sep 17 00:00:00 2001 From: Remi Tricot-Le Breton Date: Tue, 12 Jan 2021 14:55:12 +0100 Subject: [PATCH] BUG/MINOR: sample: Memory leak of sample_expr structure in case of error If an errors occurs during the sample expression parsing, the alloced sample_expr is not freed despite having its main pointer reset. This fixes GitHub issue #1046. It could be backported as far as 1.8. (cherry picked from commit 22e0d9b39cfb238e7bf866b3d78aa9b393004508) Signed-off-by: Christopher Faulet (cherry picked from commit 54c88770d37ce28077dd4a20b8ffbb54a56cca8b) Signed-off-by: Christopher Faulet (cherry picked from commit 780316e86b7170fe2951235f9bf214f26502fc14) Signed-off-by: Christopher Faulet --- src/sample.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/sample.c b/src/sample.c index b2f4245..6b395f6 100644 --- a/src/sample.c +++ b/src/sample.c @@ -831,7 +831,7 @@ struct sample_expr *sample_parse_expr(char **str, int *idx, const char *file, in const char *begw; /* beginning of word */ const char *endw; /* end of word */ const char *endt; /* end of term */ - struct sample_expr *expr; + struct sample_expr *expr = NULL; struct sample_fetch *fetch; struct sample_conv *conv; unsigned long prev_type; @@ -1023,7 +1023,7 @@ struct sample_expr *sample_parse_expr(char **str, int *idx, const char *file, in return expr; out_error: - /* TODO: prune_sample_expr(expr); */ + release_sample_expr(expr); expr = NULL; goto out; } -- 1.7.10.4