avcodec/clearvideo: Check remaining input bits in P macro block loop
authorMichael Niedermayer <michael@niedermayer.cc>
Thu, 6 Dec 2018 00:19:37 +0000 (01:19 +0100)
committerMichael Niedermayer <michael@niedermayer.cc>
Fri, 14 Dec 2018 22:24:20 +0000 (23:24 +0100)
Fixes: Timeout
Fixes: 11083/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_CLEARVIDEO_fuzzer-5657180351496192

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

index 0e3c772..ad3012f 100644 (file)
@@ -570,6 +570,8 @@ static int clv_decode_frame(AVCodecContext *avctx, void *data,
 
         for (j = 0; j < c->pmb_height; j++) {
             for (i = 0; i < c->pmb_width; i++) {
+                if (get_bits_left(&c->gb) <= 0)
+                    return AVERROR_INVALIDDATA;
                 if (get_bits1(&c->gb)) {
                     MV mv = mvi_predict(&c->mvi, i, j, zero_mv);