From bd1cbb5427c156f40f1a94c57dac0cf667f34b7b Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt Date: Thu, 6 May 2021 17:28:50 +0200 Subject: [PATCH] avcodec/wmadec: Check operations that can fail Signed-off-by: Andreas Rheinhardt --- libavcodec/wmadec.c | 35 +++++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/libavcodec/wmadec.c b/libavcodec/wmadec.c index 6eec85e59a..47abcecc9c 100644 --- a/libavcodec/wmadec.c +++ b/libavcodec/wmadec.c @@ -106,20 +106,31 @@ static av_cold int wma_decode_init(AVCodecContext *avctx) return ret; /* init MDCT */ - for (i = 0; i < s->nb_block_sizes; i++) - ff_mdct_init(&s->mdct_ctx[i], s->frame_len_bits - i + 1, 1, 1.0 / 32768.0); - - if (s->use_noise_coding) { - ff_init_vlc_from_lengths(&s->hgain_vlc, HGAINVLCBITS, FF_ARRAY_ELEMS(ff_wma_hgain_hufftab), - &ff_wma_hgain_hufftab[0][1], 2, - &ff_wma_hgain_hufftab[0][0], 2, 1, -18, 0, avctx); + for (i = 0; i < s->nb_block_sizes; i++) { + ret = ff_mdct_init(&s->mdct_ctx[i], s->frame_len_bits - i + 1, + 1, 1.0 / 32768.0); + if (ret < 0) + return ret; } - if (s->use_exp_vlc) - init_vlc(&s->exp_vlc, EXPVLCBITS, sizeof(ff_aac_scalefactor_bits), // FIXME move out of context - ff_aac_scalefactor_bits, 1, 1, - ff_aac_scalefactor_code, 4, 4, 0); - else + if (s->use_noise_coding) { + ret = ff_init_vlc_from_lengths(&s->hgain_vlc, HGAINVLCBITS, + FF_ARRAY_ELEMS(ff_wma_hgain_hufftab), + &ff_wma_hgain_hufftab[0][1], 2, + &ff_wma_hgain_hufftab[0][0], 2, 1, + -18, 0, avctx); + if (ret < 0) + return ret; + } + + if (s->use_exp_vlc) { + // FIXME move out of context + ret = init_vlc(&s->exp_vlc, EXPVLCBITS, sizeof(ff_aac_scalefactor_bits), + ff_aac_scalefactor_bits, 1, 1, + ff_aac_scalefactor_code, 4, 4, 0); + if (ret < 0) + return ret; + } else wma_lsp_to_curve_init(s, s->frame_len); avctx->sample_fmt = AV_SAMPLE_FMT_FLTP;