aacdec: don't return frames without data
authorAndreas Cadhalpun <andreas.cadhalpun@googlemail.com>
Tue, 12 May 2015 18:27:21 +0000 (20:27 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Tue, 12 May 2015 19:19:35 +0000 (21:19 +0200)
Since commit 676a395a aac->frame->data is not necessarily allocated at
the end of aac_decode_frame_int if avctx->channels is 0.

In this case a bogus frame without any data, but non-zero nb_samples is
returned.

Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/aacdec.c

index d55df43..a405faf 100644 (file)
@@ -3073,6 +3073,12 @@ static int aac_decode_frame_int(AVCodecContext *avctx, void *data,
             AV_WL32(side, 2*AV_RL32(side));
     }
 
+    if (!ac->frame->data[0] && samples) {
+        av_log(avctx, AV_LOG_ERROR, "no frame data found\n");
+        err = AVERROR_INVALIDDATA;
+        goto fail;
+    }
+
     *got_frame_ptr = !!samples;
     if (samples) {
         ac->frame->nb_samples = samples;