[FFmpeg-devel] [PATCH 02/19] avfilter/af_anequalizer: Fix memleak when inserting pad fails

Andreas Rheinhardt andreas.rheinhardt at gmail.com
Tue Aug 25 17:09:10 EEST 2020


It has been forgotten to free the name of the second outpad if attaching
the first one to the AVFilterContext fails. Fixing this is easy: Only
prepare the second outpad after (and if) the first outpad has been
successfully attached to the AVFilterContext.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>
---
 libavfilter/af_anequalizer.c | 16 ++++++----------
 1 file changed, 6 insertions(+), 10 deletions(-)

diff --git a/libavfilter/af_anequalizer.c b/libavfilter/af_anequalizer.c
index 177e1c7b39..26cf835727 100644
--- a/libavfilter/af_anequalizer.c
+++ b/libavfilter/af_anequalizer.c
@@ -199,6 +199,12 @@ static av_cold int init(AVFilterContext *ctx)
     if (!pad.name)
         return AVERROR(ENOMEM);
 
+    ret = ff_insert_outpad(ctx, 0, &pad);
+    if (ret < 0) {
+        av_freep(&pad.name);
+        return ret;
+    }
+
     if (s->draw_curves) {
         vpad = (AVFilterPad){
             .name         = av_strdup("out1"),
@@ -206,18 +212,8 @@ static av_cold int init(AVFilterContext *ctx)
             .config_props = config_video,
         };
         if (!vpad.name) {
-            av_freep(&pad.name);
             return AVERROR(ENOMEM);
         }
-    }
-
-    ret = ff_insert_outpad(ctx, 0, &pad);
-    if (ret < 0) {
-        av_freep(&pad.name);
-        return ret;
-    }
-
-    if (s->draw_curves) {
         ret = ff_insert_outpad(ctx, 1, &vpad);
         if (ret < 0) {
             av_freep(&vpad.name);
-- 
2.20.1



More information about the ffmpeg-devel mailing list