diff options
author | Andreas Rheinhardt <andreas.rheinhardt@outlook.com> | 2021-05-05 23:03:41 +0200 |
---|---|---|
committer | Andreas Rheinhardt <andreas.rheinhardt@outlook.com> | 2021-05-10 22:12:01 +0200 |
commit | a1b01483665716a617e454414be14a749f334f63 (patch) | |
tree | 9c813a23723c74074c7c9b8ba63981fcfdd568ac /libavcodec/wmaprodec.c | |
parent | 6fc4f28a11f41fd6b26a1c027c76670ab0be6db3 (diff) | |
download | ffmpeg-a1b01483665716a617e454414be14a749f334f63.tar.gz |
avcodec/wmaprodec: Check ff_mdct_init() for failure
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Diffstat (limited to 'libavcodec/wmaprodec.c')
-rw-r--r-- | libavcodec/wmaprodec.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/libavcodec/wmaprodec.c b/libavcodec/wmaprodec.c index 9607e50968..4b2dceb5bc 100644 --- a/libavcodec/wmaprodec.c +++ b/libavcodec/wmaprodec.c @@ -318,7 +318,7 @@ static av_cold int decode_init(WMAProDecodeCtx *s, AVCodecContext *avctx, int nu { uint8_t *edata_ptr = avctx->extradata; unsigned int channel_mask; - int i, bits; + int i, bits, ret; int log2_max_num_subframes; int num_possible_block_sizes; @@ -543,10 +543,13 @@ static av_cold int decode_init(WMAProDecodeCtx *s, AVCodecContext *avctx, int nu return AVERROR(ENOMEM); /** init MDCT, FIXME: only init needed sizes */ - for (i = 0; i < WMAPRO_BLOCK_SIZES; i++) - ff_mdct_init(&s->mdct_ctx[i], WMAPRO_BLOCK_MIN_BITS+1+i, 1, - 1.0 / (1 << (WMAPRO_BLOCK_MIN_BITS + i - 1)) - / (1ll << (s->bits_per_sample - 1))); + for (int i = 0; i < WMAPRO_BLOCK_SIZES; i++) { + ret = ff_mdct_init(&s->mdct_ctx[i], WMAPRO_BLOCK_MIN_BITS + 1 + i, 1, + 1.0 / (1 << (WMAPRO_BLOCK_MIN_BITS + i - 1)) + / (1ll << (s->bits_per_sample - 1))); + if (ret < 0) + return ret; + } /** init MDCT windows: simple sine window */ for (i = 0; i < WMAPRO_BLOCK_SIZES; i++) { |