diff --git a/libavcodec/hcadec.c b/libavcodec/hcadec.c index 28e7d07cec60a780947b4a5a5fc1a287cf34dbe4..11cb157277aba0d3e40dc720b9731e64d4efb3bc 100644 --- a/libavcodec/hcadec.c +++ b/libavcodec/hcadec.c @@ -157,6 +157,10 @@ static av_cold int decode_init(AVCodecContext *avctx) } else return AVERROR_INVALIDDATA; + if (c->total_band_count > FF_ARRAY_ELEMS(c->ch->imdct_in)) + return AVERROR_INVALIDDATA; + + while (get_bits_left(gb) >= 32) { chunk = get_bits_long(gb, 32); if (chunk == MKBETAG('v', 'b', 'r', 0)) {