--- libavcodec/wmadec.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/libavcodec/wmadec.c b/libavcodec/wmadec.c index d627bbe50e..6ac6221d11 100644 --- a/libavcodec/wmadec.c +++ b/libavcodec/wmadec.c @@ -822,6 +822,7 @@ static int wma_decode_superframe(AVCodecContext *avctx, void *data, uint8_t *q; float **samples; int samples_offset; + int ret; ff_tlog(avctx, "***decode_superframe:\n"); @@ -838,7 +839,9 @@ static int wma_decode_superframe(AVCodecContext *avctx, void *data, if (avctx->block_align) buf_size = avctx->block_align; - init_get_bits(&s->gb, buf, buf_size * 8); + ret = init_get_bits8(&s->gb, buf, buf_size); + if (ret < 0) + return ret; if (s->use_bit_reservoir) { /* read super frame header */ @@ -904,8 +907,10 @@ static int wma_decode_superframe(AVCodecContext *avctx, void *data, memset(q, 0, AV_INPUT_BUFFER_PADDING_SIZE); /* XXX: bit_offset bits into last frame */ - init_get_bits(&s->gb, s->last_superframe, - s->last_superframe_len * 8 + bit_offset); + ret = init_get_bits8(&s->gb, s->last_superframe, + (s->last_superframe_len * 8 + bit_offset)/8); + if (ret < 0) + return ret; /* skip unused bits */ if (s->last_bitoffset > 0) skip_bits(&s->gb, s->last_bitoffset); @@ -921,7 +926,9 @@ static int wma_decode_superframe(AVCodecContext *avctx, void *data, pos = bit_offset + 4 + 4 + s->byte_offset_bits + 3; if (pos >= MAX_CODED_SUPERFRAME_SIZE * 8 || pos > buf_size * 8) return AVERROR_INVALIDDATA; - init_get_bits(&s->gb, buf + (pos >> 3), (buf_size - (pos >> 3)) * 8); + int ret = init_get_bits8(&s->gb, buf + (pos >> 3), (buf_size - (pos >> 3))); + if (ret < 0) + return ret; len = pos & 7; if (len > 0) skip_bits(&s->gb, len); -- 2.17.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".