[FFmpeg-devel] [PATCH] fftools/ffmpeg_mux_init: fix memory leak in ffmpeg_mux_init.c

LuMingYin lumingyindetect at 163.com
Fri Apr 12 19:44:41 EEST 2024


Signed-off-by: LuMingYin <lumingyindetect at 163.com>
---
 fftools/ffmpeg_mux_init.c | 7 ++++---
 libavutil/mem.c           | 5 ++++-
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/fftools/ffmpeg_mux_init.c b/fftools/ffmpeg_mux_init.c
index 6d8bd5bcdf..e7e2281bd0 100644
--- a/fftools/ffmpeg_mux_init.c
+++ b/fftools/ffmpeg_mux_init.c
@@ -2851,9 +2851,10 @@ static int parse_forced_key_frames(void *log, KeyframeForceCtx *kf,
 
             if (nb_ch > INT_MAX - size ||
                 !(pts = av_realloc_f(pts, size += nb_ch - 1,
-                                     sizeof(*pts))))
-                return AVERROR(ENOMEM);
-
+                                     sizeof(*pts)))) {
+                ret = AVERROR(ENOMEM);
+                goto fail;
+            }
             if (p[8]) {
                 ret = av_parse_time(&t, p + 8, 1);
                 if (ret < 0) {
diff --git a/libavutil/mem.c b/libavutil/mem.c
index b205d3fb25..7f34765fe7 100644
--- a/libavutil/mem.c
+++ b/libavutil/mem.c
@@ -177,11 +177,14 @@ void *av_realloc_f(void *ptr, size_t nelem, size_t elsize)
 
     if (size_mult(elsize, nelem, &size)) {
         av_free(ptr);
+        ptr = NULL;
         return NULL;
     }
     r = av_realloc(ptr, size);
-    if (!r)
+    if (!r) {
         av_free(ptr);
+        ptr = NULL;
+    }
     return r;
 }
 
-- 
2.25.1



More information about the ffmpeg-devel mailing list