diff mbox series

[FFmpeg-devel,27/30] avcodec/mpegaudiodec_template: Check return value of subdecoder

Message ID 20200915074000.102622-27-andreas.rheinhardt@gmail.com
State Accepted
Commit dac9e88a99ea34c2f812b8f7b6781a84ac86360a
Headers show
Series [FFmpeg-devel,01/30] avcodec/flashsvenc: Avoid allocation of buffer, fix memleak
Related show

Checks

Context Check Description
andriy/default pending
andriy/make success Make finished
andriy/make_fate success Make fate finished

Commit Message

Andreas Rheinhardt Sept. 15, 2020, 7:39 a.m. UTC
After all, allocating an AVFloatDSPContext might have failed.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
---
 libavcodec/mpegaudiodec_template.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)
diff mbox series

Patch

diff --git a/libavcodec/mpegaudiodec_template.c b/libavcodec/mpegaudiodec_template.c
index de10f71e7b..98759b8e01 100644
--- a/libavcodec/mpegaudiodec_template.c
+++ b/libavcodec/mpegaudiodec_template.c
@@ -1885,7 +1885,7 @@  static av_cold int decode_init_mp3on4(AVCodecContext * avctx)
 {
     MP3On4DecodeContext *s = avctx->priv_data;
     MPEG4AudioConfig cfg;
-    int i;
+    int i, ret;
 
     if ((avctx->extradata_size < 2) || !avctx->extradata) {
         av_log(avctx, AV_LOG_ERROR, "Codec extradata missing or too short.\n");
@@ -1919,9 +1919,13 @@  static av_cold int decode_init_mp3on4(AVCodecContext * avctx)
         goto alloc_fail;
     // Put decoder context in place to make init_decode() happy
     avctx->priv_data = s->mp3decctx[0];
-    decode_init(avctx);
+    ret = decode_init(avctx);
     // Restore mp3on4 context pointer
     avctx->priv_data = s;
+    if (ret < 0) {
+        decode_close_mp3on4(avctx);
+        return ret;
+    }
     s->mp3decctx[0]->adu_mode = 1; // Set adu mode
 
     /* Create a separate codec/context for each frame (first is already ok).