avcodec/resample: check for malloc failure
authorMichael Niedermayer <michaelni@gmx.at>
Thu, 31 Jul 2014 11:04:28 +0000 (13:04 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Thu, 31 Jul 2014 11:04:28 +0000 (13:04 +0200)
Found-by: CSA
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/resample.c

index 7c0f828..c45aa16 100644 (file)
@@ -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]);