diff options
author | Andreas Rheinhardt <andreas.rheinhardt@outlook.com> | 2021-10-06 16:05:39 +0200 |
---|---|---|
committer | Andreas Rheinhardt <andreas.rheinhardt@outlook.com> | 2021-10-07 12:50:18 +0200 |
commit | 05c1f78a72916ef2466cc5a4fc778810503225ee (patch) | |
tree | f66eeb0c4edb23da8d2267277d5d932f3eb03b33 | |
parent | bae96fa9776cf35cdf32f285f2a980b31e63560a (diff) | |
download | ffmpeg-05c1f78a72916ef2466cc5a4fc778810503225ee.tar.gz |
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 <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
-rw-r--r-- | libavfilter/aeval.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/libavfilter/aeval.c b/libavfilter/aeval.c index 2dc8bace51..42cfa81325 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, \ |