[FFmpeg-devel] [PATCH 05/20] avcodec/wmadec: Check operations that can fail

Andreas Rheinhardt andreas.rheinhardt at outlook.com
Fri May 7 09:46:32 EEST 2021


Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>
---
 libavcodec/wmadec.c | 31 +++++++++++++++++++++----------
 1 file changed, 21 insertions(+), 10 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);
+    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_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);
+        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)
-        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_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;
-- 
2.27.0



More information about the ffmpeg-devel mailing list