diff --git a/libavcodec/tak_parser.c b/libavcodec/tak_parser.c index 5d8460c90a..4f2149ae11 100644 --- a/libavcodec/tak_parser.c +++ b/libavcodec/tak_parser.c @@ -43,10 +43,12 @@ static int tak_parse(AVCodecParserContext *s, AVCodecContext *avctx, GetBitContext gb; int consumed = 0; int needed = buf_size ? TAK_MAX_FRAME_HEADER_BYTES : 8; + int ret; if (s->flags & PARSER_FLAG_COMPLETE_FRAMES) { TAKStreamInfo ti; - init_get_bits(&gb, buf, buf_size); + if ((ret = init_get_bits8(&gb, buf, buf_size)) < 0) + return ret; if (!ff_tak_decode_frame_header(avctx, &gb, &ti, 127)) s->duration = t->ti.last_frame_samples ? t->ti.last_frame_samples : t->ti.frame_samples; @@ -73,8 +75,9 @@ static int tak_parse(AVCodecParserContext *s, AVCodecContext *avctx, pc->buffer[ t->index + 1 ] == 0xA0) { TAKStreamInfo ti; - init_get_bits(&gb, pc->buffer + t->index, - 8 * (pc->index - t->index)); + if ((ret = init_get_bits8(&gb, pc->buffer + t->index, + pc->index - t->index)) < 0) + return ret; if (!ff_tak_decode_frame_header(avctx, &gb, pc->frame_start_found ? &ti : &t->ti, 127) && !ff_tak_check_crc(pc->buffer + t->index,