[FFmpeg-cvslog] check for coded_frame allocation failure in several audio encoders

Justin Ruggles git at videolan.org
Sun Feb 26 05:21:46 CET 2012


ffmpeg | branch: master | Justin Ruggles <justin.ruggles at gmail.com> | Wed Feb 15 19:26:09 2012 -0500| [a8bdf2405c6027f45a899eaaa6ba74e97c1c2701] | committer: Justin Ruggles

check for coded_frame allocation failure in several audio encoders

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=a8bdf2405c6027f45a899eaaa6ba74e97c1c2701
---

 libavcodec/libgsm.c          |    4 ++++
 libavcodec/libopencore-amr.c |    3 +++
 libavcodec/libvo-aacenc.c    |    2 ++
 libavcodec/libvo-amrwbenc.c  |    2 ++
 libavcodec/mpegaudioenc.c    |    2 ++
 libavcodec/pcm.c             |    2 ++
 libavcodec/roqaudioenc.c     |    2 ++
 7 files changed, 17 insertions(+), 0 deletions(-)

diff --git a/libavcodec/libgsm.c b/libavcodec/libgsm.c
index b917cc3..fb7b196 100644
--- a/libavcodec/libgsm.c
+++ b/libavcodec/libgsm.c
@@ -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;
 }
diff --git a/libavcodec/libopencore-amr.c b/libavcodec/libopencore-amr.c
index ded9217..ebbc0d9 100644
--- a/libavcodec/libopencore-amr.c
+++ b/libavcodec/libopencore-amr.c
@@ -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;
     }
 
diff --git a/libavcodec/libvo-aacenc.c b/libavcodec/libvo-aacenc.c
index 280ba27..0a4a270 100644
--- a/libavcodec/libvo-aacenc.c
+++ b/libavcodec/libvo-aacenc.c
@@ -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);
diff --git a/libavcodec/libvo-amrwbenc.c b/libavcodec/libvo-amrwbenc.c
index 5214ee6..7e87210 100644
--- a/libavcodec/libvo-amrwbenc.c
+++ b/libavcodec/libvo-amrwbenc.c
@@ -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();
 
diff --git a/libavcodec/mpegaudioenc.c b/libavcodec/mpegaudioenc.c
index d2b1e70..455c4b2 100644
--- a/libavcodec/mpegaudioenc.c
+++ b/libavcodec/mpegaudioenc.c
@@ -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;
 }
diff --git a/libavcodec/pcm.c b/libavcodec/pcm.c
index 2e0b5ec..d040745 100644
--- a/libavcodec/pcm.c
+++ b/libavcodec/pcm.c
@@ -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;
 }
diff --git a/libavcodec/roqaudioenc.c b/libavcodec/roqaudioenc.c
index e2d0f38..3747f18 100644
--- a/libavcodec/roqaudioenc.c
+++ b/libavcodec/roqaudioenc.c
@@ -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;
 }



More information about the ffmpeg-cvslog mailing list