]> git.sesse.net Git - ffmpeg/commitdiff
avcodec/cri: Use ff_set_dimensions()
authorMichael Niedermayer <michael@niedermayer.cc>
Mon, 1 Feb 2021 19:18:14 +0000 (20:18 +0100)
committerMichael Niedermayer <michael@niedermayer.cc>
Tue, 2 Feb 2021 12:12:12 +0000 (13:12 +0100)
Fixes: out of memory
Fixes: 29985/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_CRI_fuzzer-6424425392111616
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
libavcodec/cri.c

index f7c3b4ef48f3602e964b811eba13c7d470863989..efbccf4feee19023ecb68ab907d4f1ba60ea8e17 100644 (file)
@@ -184,6 +184,7 @@ static int cri_decode_frame(AVCodecContext *avctx, void *data,
         char codec_name[1024];
         uint32_t key, length;
         float framerate;
+        int width, height;
 
         key    = bytestream2_get_le32(gb);
         length = bytestream2_get_le32(gb);
@@ -199,11 +200,14 @@ static int cri_decode_frame(AVCodecContext *avctx, void *data,
         case 100:
             if (length < 16)
                 return AVERROR_INVALIDDATA;
-            avctx->width   = bytestream2_get_le32(gb);
-            avctx->height  = bytestream2_get_le32(gb);
+            width   = bytestream2_get_le32(gb);
+            height  = bytestream2_get_le32(gb);
             s->color_model = bytestream2_get_le32(gb);
             if (bytestream2_get_le32(gb) != 1)
                 return AVERROR_INVALIDDATA;
+            ret = ff_set_dimensions(avctx, width, height);
+            if (ret < 0)
+                return ret;
             length -= 16;
             goto skip;
         case 101: