summaryrefslogtreecommitdiff
path: root/libs/ffvpx/libavcodec/vp9_parser.c
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ffvpx/libavcodec/vp9_parser.c')
-rw-r--r--libs/ffvpx/libavcodec/vp9_parser.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/libs/ffvpx/libavcodec/vp9_parser.c b/libs/ffvpx/libavcodec/vp9_parser.c
index 9531f34a3..c957a7566 100644
--- a/libs/ffvpx/libavcodec/vp9_parser.c
+++ b/libs/ffvpx/libavcodec/vp9_parser.c
@@ -36,12 +36,16 @@ static int parse(AVCodecParserContext *ctx,
*out_data = data;
*out_size = size;
- if ((res = init_get_bits8(&gb, data, size)) < 0)
+ if (!size || (res = init_get_bits8(&gb, data, size)) < 0)
return size; // parsers can't return errors
get_bits(&gb, 2); // frame marker
profile = get_bits1(&gb);
profile |= get_bits1(&gb) << 1;
if (profile == 3) profile += get_bits1(&gb);
+ if (profile > 3)
+ return size;
+
+ avctx->profile = profile;
if (get_bits1(&gb)) {
keyframe = 0;