diff --git a/libavcodec/wavpack.c b/libavcodec/wavpack.c index 4992ef5e2a..929d9ef979 100644 --- a/libavcodec/wavpack.c +++ b/libavcodec/wavpack.c @@ -887,6 +887,12 @@ static int wavpack_decode_block(AVCodecContext *avctx, int block_no, s->float_flag = bytestream2_get_byte(&gb); s->float_shift = bytestream2_get_byte(&gb); s->float_max_exp = bytestream2_get_byte(&gb); + if (s->float_shift > 31) { + av_log(avctx, AV_LOG_ERROR, + "Invalid FLOATINFO, shift = %d (> 31)\n", s->float_shift); + s->float_shift = 0; + continue; + } got_float = 1; bytestream2_skip(&gb, 1); break;