aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Cadhalpun <andreas.cadhalpun@googlemail.com>2015-05-12 20:27:21 +0200
committerMichael Niedermayer <michaelni@gmx.at>2015-06-01 23:25:20 +0200
commitde648a11d8688ff4b0d02cf7e78bea870a5ea903 (patch)
treea62e5d172a63e1a7a958a3f528a7c7dd1b5691f2
parentf30ab69b38324d156f0511c2c59a4f0d232c2b88 (diff)
downloadffmpeg-de648a11d8688ff4b0d02cf7e78bea870a5ea903.tar.gz
aacdec: don't return frames without data
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> (cherry picked from commit ec38a1ba404b8cb8d71ccee2b8dcd6f3fcbde273) Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--libavcodec/aacdec.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/libavcodec/aacdec.c b/libavcodec/aacdec.c
index e92f1a1d9c..4a8c2431b1 100644
--- a/libavcodec/aacdec.c
+++ b/libavcodec/aacdec.c
@@ -3021,6 +3021,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;