summaryrefslogtreecommitdiff
path: root/libavcodec/dpx_parser.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2014-05-29 17:26:26 +0200
committerMichael Niedermayer <michaelni@gmx.at>2014-05-29 17:28:06 +0200
commitfba0ac28055d3dca2846ea41d3326f08455d1a4d (patch)
treec63e4c1c20253690ae3b64321b5f1ba1ccd976e6 /libavcodec/dpx_parser.c
parent8df5d9aabfbfe2b6e34c25968788499d7b8504f8 (diff)
avcodec/dpx_parser: Allow frame size to be too small
Fixes Ticket3402 Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/dpx_parser.c')
-rw-r--r--libavcodec/dpx_parser.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/libavcodec/dpx_parser.c b/libavcodec/dpx_parser.c
index 5f29eee033..db6ebf7ddf 100644
--- a/libavcodec/dpx_parser.c
+++ b/libavcodec/dpx_parser.c
@@ -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;
+ }
}
}