[FFmpeg-cvslog] avformat/flvdec: don't leak extradata pointer on realloc failure

Timo Rothenpieler git at videolan.org
Tue Jan 7 20:22:49 EET 2025


ffmpeg | branch: master | Timo Rothenpieler <timo at rothenpieler.org> | Tue Jan  7 19:17:54 2025 +0100| [af74fe7139f4e99c12e9396b0b45c6d0c8d291cc] | committer: Timo Rothenpieler

avformat/flvdec: don't leak extradata pointer on realloc failure

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=af74fe7139f4e99c12e9396b0b45c6d0c8d291cc
---

 libavformat/flvdec.c | 22 +++++++++++++---------
 1 file changed, 13 insertions(+), 9 deletions(-)

diff --git a/libavformat/flvdec.c b/libavformat/flvdec.c
index 6fdf29a3fe..15494d26cd 100644
--- a/libavformat/flvdec.c
+++ b/libavformat/flvdec.c
@@ -975,18 +975,22 @@ static int flv_queue_extradata(FLVContext *flv, AVIOContext *pb, int stream,
         int new_count = stream + 1;
 
         if (flv->mt_extradata_cnt < new_count) {
-            flv->mt_extradata = av_realloc(flv->mt_extradata,
-                                           sizeof(*flv->mt_extradata) *
-                                           new_count);
-            flv->mt_extradata_sz = av_realloc(flv->mt_extradata_sz,
-                                              sizeof(*flv->mt_extradata_sz) *
-                                              new_count);
-            if (!flv->mt_extradata || !flv->mt_extradata_sz)
+            void *tmp = av_realloc_array(flv->mt_extradata, new_count,
+                                         sizeof(*flv->mt_extradata));
+            if (!tmp)
                 return AVERROR(ENOMEM);
+            flv->mt_extradata = tmp;
+
+            tmp = av_realloc_array(flv->mt_extradata_sz, new_count,
+                                   sizeof(*flv->mt_extradata_sz));
+            if (!tmp)
+                return AVERROR(ENOMEM);
+            flv->mt_extradata_sz = tmp;
+
             // Set newly allocated pointers/sizes to 0
             for (int i = flv->mt_extradata_cnt; i < new_count; i++) {
-                    flv->mt_extradata[i] = NULL;
-                    flv->mt_extradata_sz[i] = 0;
+                flv->mt_extradata[i] = NULL;
+                flv->mt_extradata_sz[i] = 0;
             }
             flv->mt_extradata_cnt = new_count;
         }



More information about the ffmpeg-cvslog mailing list