check for coded_frame allocation failure in several audio encoders
authorJustin Ruggles <justin.ruggles@gmail.com>
Thu, 16 Feb 2012 00:26:09 +0000 (19:26 -0500)
committerJustin Ruggles <justin.ruggles@gmail.com>
Sat, 25 Feb 2012 16:49:41 +0000 (11:49 -0500)
libavcodec/libgsm.c
libavcodec/libopencore-amr.c
libavcodec/libvo-aacenc.c
libavcodec/libvo-amrwbenc.c
libavcodec/mpegaudioenc.c
libavcodec/pcm.c
libavcodec/roqaudioenc.c

index b917cc3..fb7b196 100644 (file)
@@ -70,6 +70,10 @@ static av_cold int libgsm_encode_init(AVCodecContext *avctx) {
     }
 
     avctx->coded_frame= avcodec_alloc_frame();
+    if (!avctx->coded_frame) {
+        gsm_destroy(avctx->priv_data);
+        return AVERROR(ENOMEM);
+    }
 
     return 0;
 }
index ded9217..ebbc0d9 100644 (file)
@@ -196,10 +196,13 @@ static av_cold int amr_nb_encode_init(AVCodecContext *avctx)
 
     avctx->frame_size  = 160;
     avctx->coded_frame = avcodec_alloc_frame();
+    if (!avctx->coded_frame)
+        return AVERROR(ENOMEM);
 
     s->enc_state = Encoder_Interface_init(s->enc_dtx);
     if (!s->enc_state) {
         av_log(avctx, AV_LOG_ERROR, "Encoder_Interface_init error\n");
+        av_freep(&avctx->coded_frame);
         return -1;
     }
 
index 280ba27..0a4a270 100644 (file)
@@ -39,6 +39,8 @@ static av_cold int aac_encode_init(AVCodecContext *avctx)
     int index;
 
     avctx->coded_frame = avcodec_alloc_frame();
+    if (!avctx->coded_frame)
+        return AVERROR(ENOMEM);
     avctx->frame_size = 1024;
 
     voGetAACEncAPI(&s->codec_api);
index 5214ee6..7e87210 100644 (file)
@@ -87,6 +87,8 @@ static av_cold int amr_wb_encode_init(AVCodecContext *avctx)
 
     avctx->frame_size  = 320;
     avctx->coded_frame = avcodec_alloc_frame();
+    if (!avctx->coded_frame)
+        return AVERROR(ENOMEM);
 
     s->state     = E_IF_init();
 
index d2b1e70..455c4b2 100644 (file)
@@ -181,6 +181,8 @@ static av_cold int MPA_encode_init(AVCodecContext *avctx)
     }
 
     avctx->coded_frame= avcodec_alloc_frame();
+    if (!avctx->coded_frame)
+        return AVERROR(ENOMEM);
 
     return 0;
 }
index 2e0b5ec..d040745 100644 (file)
@@ -49,6 +49,8 @@ static av_cold int pcm_encode_init(AVCodecContext *avctx)
     avctx->bits_per_coded_sample = av_get_bits_per_sample(avctx->codec->id);
     avctx->block_align = avctx->channels * avctx->bits_per_coded_sample/8;
     avctx->coded_frame= avcodec_alloc_frame();
+    if (!avctx->coded_frame)
+        return AVERROR(ENOMEM);
 
     return 0;
 }
index e2d0f38..3747f18 100644 (file)
@@ -59,6 +59,8 @@ static av_cold int roq_dpcm_encode_init(AVCodecContext *avctx)
     context->lastSample[0] = context->lastSample[1] = 0;
 
     avctx->coded_frame= avcodec_alloc_frame();
+    if (!avctx->coded_frame)
+        return AVERROR(ENOMEM);
 
     return 0;
 }