From fdf7a28b0a9003dfcb56c27c962c59cfded6310d Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt Date: Wed, 6 Oct 2021 16:05:39 +0200 Subject: [PATCH] avfilter/aeval: Fix leak of expressions upon reallocation error Fix this by switching to av_dynarray_add_nofree() which is more natural anyway because the entries of the array are pointers. Reviewed-by: Paul B Mahol Signed-off-by: Andreas Rheinhardt (cherry picked from commit 05c1f78a72916ef2466cc5a4fc778810503225ee) --- libavfilter/aeval.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/libavfilter/aeval.c b/libavfilter/aeval.c index d5437431ab..7636063bcf 100644 --- a/libavfilter/aeval.c +++ b/libavfilter/aeval.c @@ -124,11 +124,10 @@ static int parse_channel_expressions(AVFilterContext *ctx, } #define ADD_EXPRESSION(expr_) do { \ - if (!av_dynarray2_add((void **)&eval->expr, &eval->nb_channels, \ - sizeof(*eval->expr), NULL)) { \ - ret = AVERROR(ENOMEM); \ + ret = av_dynarray_add_nofree(&eval->expr, \ + &eval->nb_channels, NULL); \ + if (ret < 0) \ goto end; \ - } \ eval->expr[eval->nb_channels-1] = NULL; \ ret = av_expr_parse(&eval->expr[eval->nb_channels - 1], expr_, \ var_names, func1_names, func1, \