diff mbox series

[FFmpeg-devel,V2,3/5] lavfi/coreimage: fix memory leak after av_dict_parse_string fail

Message ID 1577966105-4642-3-git-send-email-mypopydev@gmail.com
State New
Headers show
Series [FFmpeg-devel,V2,1/5] lavc/bsf: fix memory leak after av_dict_parse_string fail
Related show

Checks

Context Check Description
andriy/ffmpeg-patchwork pending
andriy/ffmpeg-patchwork success Applied patch
andriy/ffmpeg-patchwork success Configure finished
andriy/ffmpeg-patchwork success Make finished
andriy/ffmpeg-patchwork success Make fate finished

Commit Message

Jun Zhao Jan. 2, 2020, 11:55 a.m. UTC
From: Jun Zhao <barryjzhao@tencent.com>

In case of failure, all the successfully set entries are stored in
*pm. We need to manually free the created dictionary to avoid
memory leak.

Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
---
 libavfilter/vf_coreimage.m |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)
diff mbox series

Patch

diff --git a/libavfilter/vf_coreimage.m b/libavfilter/vf_coreimage.m
index 323a28c..4ed5ba7 100644
--- a/libavfilter/vf_coreimage.m
+++ b/libavfilter/vf_coreimage.m
@@ -486,6 +486,7 @@  static av_cold int init(AVFilterContext *fctx)
         av_log(ctx, AV_LOG_DEBUG, "Filter_string: %s\n", ctx->filter_string);
         ret = av_dict_parse_string(&filter_dict, ctx->filter_string, "@", "#", AV_DICT_MULTIKEY); // parse filter_name:all_filter_options
         if (ret) {
+            av_dict_free(&filter_dict);
             av_log(ctx, AV_LOG_ERROR, "Parsing of filters failed.\n");
             return AVERROR(EIO);
         }
@@ -507,6 +508,7 @@  static av_cold int init(AVFilterContext *fctx)
             if (strncmp(f->value, "default", 7)) { // not default
                 ret = av_dict_parse_string(&filter_options, f->value, "=", "@", 0); // parse option_name:option_value
                 if (ret) {
+                    av_dict_free(&filter_options);
                     av_log(ctx, AV_LOG_ERROR, "Parsing of filter options for \"%s\" failed.\n", f->key);
                     return AVERROR(EIO);
                 }