avcodec/dpx_parser: Allow frame size to be too small
authorMichael Niedermayer <michaelni@gmx.at>
Thu, 29 May 2014 15:26:26 +0000 (17:26 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Thu, 29 May 2014 15:28:06 +0000 (17:28 +0200)
Fixes Ticket3402

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/dpx_parser.c

index 5f29eee..db6ebf7 100644 (file)
@@ -68,7 +68,6 @@ static int dpx_parse(AVCodecParserContext *s, AVCodecContext *avctx,
             d->remaining_size -= i;
             if (d->remaining_size)
                 goto flush;
-            next = i;
         }
     }
 
@@ -84,8 +83,15 @@ static int dpx_parse(AVCodecParserContext *s, AVCodecContext *avctx,
             if (d->fsize > buf_size - i + 19)
                 d->remaining_size = d->fsize - buf_size + i - 19;
             else
-                next = d->fsize + i - 19;
+                i += d->fsize - 19;
+
             break;
+        } else if (d->index > 17) {
+            if (d->pc.state == MKBETAG('S','D','P','X') ||
+                d->pc.state == MKTAG('S','D','P','X')) {
+                next = i - 4;
+                break;
+            }
         }
     }