[FFmpeg-cvslog] avcodec/pngdec: Check that previous_picture has same w/h/format
Michael Niedermayer
git at videolan.org
Sat Jul 13 15:44:22 EEST 2019
ffmpeg | branch: master | Michael Niedermayer <michael at niedermayer.cc> | Wed Jul 10 23:02:36 2019 +0200| [18c808ffbed81ea580fe6ddd6524dd7bea3f8d0e] | committer: Michael Niedermayer
avcodec/pngdec: Check that previous_picture has same w/h/format
Fixes: out of array access
Fixes: 15540/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_APNG_fuzzer-5684905029140480
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Reviewed-by: Paul B Mahol <onemda at gmail.com>
Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=18c808ffbed81ea580fe6ddd6524dd7bea3f8d0e
---
libavcodec/pngdec.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/libavcodec/pngdec.c b/libavcodec/pngdec.c
index 5209e342db..bf5a5191cc 100644
--- a/libavcodec/pngdec.c
+++ b/libavcodec/pngdec.c
@@ -1391,6 +1391,9 @@ exit_loop:
if (CONFIG_PNG_DECODER && avctx->codec_id != AV_CODEC_ID_APNG)
handle_p_frame_png(s, p);
else if (CONFIG_APNG_DECODER &&
+ s->previous_picture.f->width == p->width &&
+ s->previous_picture.f->height== p->height &&
+ s->previous_picture.f->format== p->format &&
avctx->codec_id == AV_CODEC_ID_APNG &&
(ret = handle_p_frame_apng(avctx, s, p)) < 0)
goto fail;
More information about the ffmpeg-cvslog
mailing list