[FFmpeg-devel] [PATCH 2/3] avcodec/agm: YUV420 without DCT needs even dimensions

Michael Niedermayer michael at niedermayer.cc
Sat Jan 11 00:03:52 EET 2020


Fixes: out of array access
Fixes: 19892/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_AGM_fuzzer-5707525924323328

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
---
 libavcodec/agm.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/libavcodec/agm.c b/libavcodec/agm.c
index 80f4697ee5..a874226c28 100644
--- a/libavcodec/agm.c
+++ b/libavcodec/agm.c
@@ -1239,6 +1239,11 @@ static av_cold int decode_init(AVCodecContext *avctx)
     s->dct = avctx->codec_tag != MKTAG('A', 'G', 'M', '4') &&
              avctx->codec_tag != MKTAG('A', 'G', 'M', '5');
 
+    if (!s->rgb && !s->dct) {
+        if ((avctx->width & 1) || (avctx->height & 1))
+            return AVERROR_INVALIDDATA;
+    }
+
     avctx->idct_algo = FF_IDCT_SIMPLE;
     ff_idctdsp_init(&s->idsp, avctx);
     ff_init_scantable(s->idsp.idct_permutation, &s->scantable, ff_zigzag_direct);
-- 
2.24.0



More information about the ffmpeg-devel mailing list