avcodec/tscc2: Skip duplicate frames
authorMichael Niedermayer <michael@niedermayer.cc>
Sun, 21 May 2017 13:34:21 +0000 (15:34 +0200)
committerMichael Niedermayer <michael@niedermayer.cc>
Thu, 25 May 2017 12:30:04 +0000 (14:30 +0200)
This turns CFR duplicated frames into skiped frames

Fixes: Timeout
Fixes: 1719/clusterfuzz-testcase-minimized-6375090079924224

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

index f64c765..a8c7ee7 100644 (file)
@@ -235,18 +235,15 @@ static int tscc2_decode_frame(AVCodecContext *avctx, void *data,
         return AVERROR_INVALIDDATA;
     }
 
-    if ((ret = ff_reget_buffer(avctx, c->pic)) < 0) {
-        return ret;
-    }
-
     if (frame_type == 0) {
-        *got_frame      = 1;
-        if ((ret = av_frame_ref(data, c->pic)) < 0)
-            return ret;
-
+        // Skip duplicate frames
         return buf_size;
     }
 
+    if ((ret = ff_reget_buffer(avctx, c->pic)) < 0) {
+        return ret;
+    }
+
     if (bytestream2_get_bytes_left(&gb) < 4) {
         av_log(avctx, AV_LOG_ERROR, "Frame is too short\n");
         return AVERROR_INVALIDDATA;
index 6f0e8a5..09ed897 100644 (file)
@@ -5,33 +5,25 @@
 #sar 0: 0/1
 0,          0,          0,        1,   230400, 0x7a2103c0
 0,          1,          1,        1,   230400, 0xd381c279
-0,          2,          2,        1,   230400, 0xd381c279
 0,          3,          3,        1,   230400, 0x110aec27
 0,          4,          4,        1,   230400, 0x4be67ee7
 0,          5,          5,        1,   230400, 0xd87fe4b4
-0,          6,          6,        1,   230400, 0xd87fe4b4
 0,          7,          7,        1,   230400, 0x9bc6a398
 0,          8,          8,        1,   230400, 0xd67d92db
 0,          9,          9,        1,   230400, 0x3df6559e
-0,         10,         10,        1,   230400, 0x3df6559e
 0,         11,         11,        1,   230400, 0x2136ff25
 0,         12,         12,        1,   230400, 0x94573fe6
 0,         13,         13,        1,   230400, 0xbf67d3f5
-0,         14,         14,        1,   230400, 0xbf67d3f5
 0,         15,         15,        1,   230400, 0x2592b5cf
 0,         16,         16,        1,   230400, 0x5b23cd93
 0,         17,         17,        1,   230400, 0x9b76d079
-0,         18,         18,        1,   230400, 0x9b76d079
 0,         19,         19,        1,   230400, 0x771a017e
 0,         20,         20,        1,   230400, 0xacfee1d0
 0,         21,         21,        1,   230400, 0x6b9ff4eb
-0,         22,         22,        1,   230400, 0x6b9ff4eb
 0,         23,         23,        1,   230400, 0xbaf643e1
 0,         24,         24,        1,   230400, 0x052efe59
 0,         25,         25,        1,   230400, 0xd751f901
-0,         26,         26,        1,   230400, 0xd751f901
 0,         27,         27,        1,   230400, 0x6f94e11f
 0,         28,         28,        1,   230400, 0x17eeabb9
 0,         29,         29,        1,   230400, 0x3733a035
-0,         30,         30,        1,   230400, 0x3733a035
 0,         31,         31,        1,   230400, 0xb0829f45