From 496dcbbc86b679a3bc23421ed71a35ca1bb8fd9b Mon Sep 17 00:00:00 2001 From: Alex Converse Date: Fri, 6 Mar 2009 21:19:16 +0000 Subject: ADTS: Increased protection against writing illegal/nonsense files. Originally committed as revision 17859 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavformat/adtsenc.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'libavformat/adtsenc.c') diff --git a/libavformat/adtsenc.c b/libavformat/adtsenc.c index 9916b92ac6..70e252e2b6 100644 --- a/libavformat/adtsenc.c +++ b/libavformat/adtsenc.c @@ -42,7 +42,7 @@ static int decode_extradata(AVFormatContext *s, ADTSContext *adts, uint8_t *buf, adts->sample_rate_index = get_bits(&gb, 4); adts->channel_conf = get_bits(&gb, 4); - if (adts->objecttype > 3) { + if (adts->objecttype > 3U) { av_log(s, AV_LOG_ERROR, "MPEG-4 AOT %d is not allowed in ADTS\n", adts->objecttype+1); return -1; } @@ -54,6 +54,18 @@ static int decode_extradata(AVFormatContext *s, ADTSContext *adts, uint8_t *buf, ff_log_missing_feature(s, "PCE based channel configuration", 0); return -1; } + if (get_bits(&gb, 1)) { + av_log(s, AV_LOG_ERROR, "960/120 MDCT window is not allowed in ADTS\n"); + return -1; + } + if (get_bits(&gb, 1)) { + av_log(s, AV_LOG_ERROR, "Scalable configurations are not allowed in ADTS\n"); + return -1; + } + if (get_bits(&gb, 1)) { + ff_log_missing_feature(s, "Signaled SBR or PS", 0); + return -1; + } adts->write_adts = 1; -- cgit v1.2.3