avcodec/fic: Check available input space for cursor
authorMichael Niedermayer <michael@niedermayer.cc>
Sat, 5 May 2018 20:00:01 +0000 (22:00 +0200)
committerMichael Niedermayer <michael@niedermayer.cc>
Thu, 17 May 2018 00:23:06 +0000 (02:23 +0200)
Fixes: out of array read
Fixes: 6546/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_FIC_fuzzer-6317064647081984

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
libavcodec/fic.c

index 7f70ee4..c288c97 100644 (file)
@@ -338,6 +338,10 @@ static int fic_decode_frame(AVCodecContext *avctx, void *data,
         skip_cursor = 1;
     }
 
+    if (!skip_cursor && avpkt->size < CURSOR_OFFSET + sizeof(ctx->cursor_buf)) {
+        skip_cursor = 1;
+    }
+
     /* Slice height for all but the last slice. */
     ctx->slice_h = 16 * (ctx->aligned_height >> 4) / nslices;
     if (ctx->slice_h % 16)