X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fmlpdec.c;h=1a2c0f29acefa4ddf941efd55f25810da178fc07;hb=9eb7d8b45d0497d75e5655b79d9eea63bedc833c;hp=39c40914cd83fcb601a5ae73678adbb6554dd384;hpb=109b0d7c0f29462b6937df47e64a06f65b69bfbf;p=ffmpeg diff --git a/libavcodec/mlpdec.c b/libavcodec/mlpdec.c index 39c40914cd8..1a2c0f29ace 100644 --- a/libavcodec/mlpdec.c +++ b/libavcodec/mlpdec.c @@ -266,7 +266,7 @@ static inline int read_huff_channels(MLPDecodeContext *m, GetBitContext *gbp, return AVERROR_INVALIDDATA; if (lsb_bits > 0) - result = (result << lsb_bits) + get_bits(gbp, lsb_bits); + result = (result << lsb_bits) + get_bits_long(gbp, lsb_bits); result += cp->sign_huff_offset; result *= 1 << quant_step_size; @@ -829,7 +829,7 @@ static int read_channel_params(MLPDecodeContext *m, unsigned int substr, cp->codebook = get_bits(gbp, 2); cp->huff_lsbs = get_bits(gbp, 5); - if (cp->huff_lsbs > 24) { + if (cp->codebook > 0 && cp->huff_lsbs > 24) { av_log(m->avctx, AV_LOG_ERROR, "Invalid huff_lsbs.\n"); cp->huff_lsbs = 0; return AVERROR_INVALIDDATA;