X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fwmadec.c;h=07fd960f7f93a354caefe4ccd19e3458d0581ed5;hb=c0d3fea6000bae5937df6f5744e1dfdd3ab83795;hp=78b51e5871bf8c685f9eb7524025cdc738014a4e;hpb=e645d7a6d452df83cedcbb1d6708429ceea156da;p=ffmpeg diff --git a/libavcodec/wmadec.c b/libavcodec/wmadec.c index 78b51e5871b..07fd960f7f9 100644 --- a/libavcodec/wmadec.c +++ b/libavcodec/wmadec.c @@ -585,10 +585,16 @@ static int wma_decode_block(WMACodecContext *s) decode_exp_lsp(s, ch); } s->exponents_bsize[ch] = bsize; + s->exponents_initialized[ch] = 1; } } } + for (ch = 0; ch < s->avctx->channels; ch++) { + if (s->channel_coded[ch] && !s->exponents_initialized[ch]) + return AVERROR_INVALIDDATA; + } + /* parse spectral coefficients : just RLE encoding */ for (ch = 0; ch < s->avctx->channels; ch++) { if (s->channel_coded[ch]) { @@ -889,11 +895,11 @@ static int wma_decode_superframe(AVCodecContext *avctx, void *data, q = s->last_superframe + s->last_superframe_len; len = bit_offset; while (len > 7) { - *q++ = (get_bits) (&s->gb, 8); + *q++ = get_bits(&s->gb, 8); len -= 8; } if (len > 0) - *q++ = (get_bits) (&s->gb, len) << (8 - len); + *q++ = get_bits(&s->gb, len) << (8 - len); memset(q, 0, AV_INPUT_BUFFER_PADDING_SIZE); /* XXX: bit_offset bits into last frame */