From a8bdf2405c6027f45a899eaaa6ba74e97c1c2701 Mon Sep 17 00:00:00 2001 From: Justin Ruggles Date: Wed, 15 Feb 2012 19:26:09 -0500 Subject: [PATCH] check for coded_frame allocation failure in several audio encoders --- 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(+) 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; } -- 2.7.4