From 5ae5c7ab274b7d85f2496e72c27449fd01b9b396 Mon Sep 17 00:00:00 2001 From: Damiano Galassi Date: Sat, 16 Jul 2022 10:04:58 +0200 Subject: [PATCH] avformat/matroskaenc: return error if aac extradata changes extradata changing would result in an invalid stream. also, as the code was written, rewriting extradata was corrupting the track header resulting in an invalid file. Original patch by John Stebbins. --- libavformat/matroskaenc.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index 1256bdfe36..d24f6a7ad3 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -2693,6 +2693,16 @@ static int mkv_check_new_extra_data(AVFormatContext *s, const AVPacket *pkt) case AV_CODEC_ID_AAC: if (side_data_size && mkv->track.bc) { int output_sample_rate = 0; + if (par->extradata && par->extradata_size) { + if (par->extradata_size != side_data_size || + memcmp(par->extradata, side_data, side_data_size)) { + av_log(s, AV_LOG_ERROR, "Error, AAC extradata changed mid-stream.\n"); + return AVERROR(EINVAL); + } else { + // Already written + break; + } + } ret = get_aac_sample_rates(s, mkv, side_data, side_data_size, &track->sample_rate, &output_sample_rate); if (ret < 0) -- 2.32.1 (Apple Git-133)