From c269c43a83166003ab6649263bc60634a6b7866f Mon Sep 17 00:00:00 2001 From: James Almer Date: Thu, 24 Nov 2016 21:10:47 -0300 Subject: avcodec/aac_adtstoasc_bsf: validate and forward extradata if the stream is already ASC Fixes ticket #5973 Reviewed-by: Hendrik Leppkes Signed-off-by: James Almer (cherry picked from commit 6e1902bab4349a79c45807af18ebf5b50f7b436b) --- Changelog | 1 + libavcodec/aac_adtstoasc_bsf.c | 12 ++++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/Changelog b/Changelog index 94f652e319..82d38e5a67 100644 --- a/Changelog +++ b/Changelog @@ -2,6 +2,7 @@ Entries are sorted chronologically from oldest to youngest within each release, releases are sorted from youngest to oldest. version 3.2.1: +- avcodec/aac_adtstoasc_bsf: validate and forward extradata if the stream is already ASC - mss2: only use error correction for matching block counts - softfloat: decrease MIN_EXP to cover full float range - libopusdec: default to stereo for invalid number of channels diff --git a/libavcodec/aac_adtstoasc_bsf.c b/libavcodec/aac_adtstoasc_bsf.c index 48889fc48e..1067160559 100644 --- a/libavcodec/aac_adtstoasc_bsf.c +++ b/libavcodec/aac_adtstoasc_bsf.c @@ -136,8 +136,16 @@ fail: static int aac_adtstoasc_init(AVBSFContext *ctx) { - av_freep(&ctx->par_out->extradata); - ctx->par_out->extradata_size = 0; + /* Validate the extradata if the stream is already MPEG-4 AudioSpecificConfig */ + if (ctx->par_in->extradata) { + MPEG4AudioConfig mp4ac; + int ret = avpriv_mpeg4audio_get_config(&mp4ac, ctx->par_in->extradata, + ctx->par_in->extradata_size * 8, 1); + if (ret < 0) { + av_log(ctx, AV_LOG_ERROR, "Error parsing AudioSpecificConfig extradata!\n"); + return ret; + } + } return 0; } -- cgit v1.2.3