[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