[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