aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustin Ruggles <justin.ruggles@gmail.com>2012-02-15 19:26:09 -0500
committerJustin Ruggles <justin.ruggles@gmail.com>2012-02-25 11:49:41 -0500
commita8bdf2405c6027f45a899eaaa6ba74e97c1c2701 (patch)
tree0538bf58d2aca6d32b0dc45f5b2806b330b9898a
parent255ad8881db0fa937e3632c4937f23d29d0e423d (diff)
downloadffmpeg-a8bdf2405c6027f45a899eaaa6ba74e97c1c2701.tar.gz
check for coded_frame allocation failure in several audio encoders
-rw-r--r--libavcodec/libgsm.c4
-rw-r--r--libavcodec/libopencore-amr.c3
-rw-r--r--libavcodec/libvo-aacenc.c2
-rw-r--r--libavcodec/libvo-amrwbenc.c2
-rw-r--r--libavcodec/mpegaudioenc.c2
-rw-r--r--libavcodec/pcm.c2
-rw-r--r--libavcodec/roqaudioenc.c2
7 files changed, 17 insertions, 0 deletions
diff --git a/libavcodec/libgsm.c b/libavcodec/libgsm.c
index b917cc374d..fb7b196022 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 ded92179d3..ebbc0d90d7 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 280ba27ef9..0a4a270eda 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 5214ee6d2e..7e8721015b 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 d2b1e70900..455c4b2662 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 2e0b5ec4b0..d0407453de 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 e2d0f3896e..3747f18c1b 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;
}