X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fac3_parser.c;h=1e203ae6ac233df247d799c562dc3f41a45c680d;hb=67cdfcf694f840d215be940f82545c45c9be193a;hp=1015245a90d7addaaf46420949da332472f43582;hpb=67e8f476b7d3c21686a2d453d052818ac92688b3;p=ffmpeg diff --git a/libavcodec/ac3_parser.c b/libavcodec/ac3_parser.c index 1015245a90d..1e203ae6ac2 100644 --- a/libavcodec/ac3_parser.c +++ b/libavcodec/ac3_parser.c @@ -162,7 +162,9 @@ int avpriv_ac3_parse_header(AC3HeaderInfo **phdr, const uint8_t *buf, return AVERROR(ENOMEM); hdr = *phdr; - init_get_bits8(&gb, buf, size); + err = init_get_bits8(&gb, buf, size); + if (err < 0) + return AVERROR_INVALIDDATA; err = ff_ac3_parse_header(&gb, hdr); if (err < 0) return AVERROR_INVALIDDATA; @@ -218,8 +220,8 @@ static int ac3_sync(uint64_t state, AACAC3ParseContext *hdr_info, else if (hdr_info->codec_id == AV_CODEC_ID_NONE) hdr_info->codec_id = AV_CODEC_ID_AC3; - *need_next_header = (hdr.frame_type != EAC3_FRAME_TYPE_AC3_CONVERT); *new_frame_start = (hdr.frame_type != EAC3_FRAME_TYPE_DEPENDENT); + *need_next_header = *new_frame_start || (hdr.frame_type != EAC3_FRAME_TYPE_AC3_CONVERT); return hdr.frame_size; }