[FFmpeg-cvslog] avcodec/resample: check for malloc failure

Michael Niedermayer git at videolan.org
Thu Jul 31 14:18:39 CEST 2014


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Thu Jul 31 13:04:28 2014 +0200| [ceff29b9ad611ae5c357a068eee047912bb9e8ff] | committer: Michael Niedermayer

avcodec/resample: check for malloc failure

Found-by: CSA
Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

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

 libavcodec/resample.c |   10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/libavcodec/resample.c b/libavcodec/resample.c
index 7c0f828..c45aa16 100644
--- a/libavcodec/resample.c
+++ b/libavcodec/resample.c
@@ -348,9 +348,16 @@ int audio_resample(ReSampleContext *s, short *output, short *input, int nb_sampl
     /* XXX: move those malloc to resample init code */
     for (i = 0; i < s->filter_channels; i++) {
         bufin[i] = av_malloc_array((nb_samples + s->temp_len), sizeof(short));
+        bufout[i] = av_malloc_array(lenout, sizeof(short));
+
+        if (!bufin[i] || !bufout[i]) {
+            av_log(s->resample_context, AV_LOG_ERROR, "Could not allocate buffer\n");
+            nb_samples1 = 0;
+            goto fail;
+        }
+
         memcpy(bufin[i], s->temp[i], s->temp_len * sizeof(short));
         buftmp2[i] = bufin[i] + s->temp_len;
-        bufout[i] = av_malloc_array(lenout, sizeof(short));
     }
 
     if (s->input_channels == 2 && s->output_channels == 1) {
@@ -411,6 +418,7 @@ int audio_resample(ReSampleContext *s, short *output, short *input, int nb_sampl
         }
     }
 
+fail:
     for (i = 0; i < s->filter_channels; i++) {
         av_free(bufin[i]);
         av_free(bufout[i]);



More information about the ffmpeg-cvslog mailing list