[FFmpeg-devel] [PATCH v1 04/10] return value check for init_get_bits in wmadec.c
maryam ebrahimzadeh
me22bee at outlook.com
Thu Aug 12 07:52:03 EEST 2021
---
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
More information about the ffmpeg-devel
mailing list