Commit 496dcbbc authored by Alex Converse's avatar Alex Converse

ADTS: Increased protection against writing illegal/nonsense files.

Originally committed as revision 17859 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent 8507bde0
...@@ -42,7 +42,7 @@ static int decode_extradata(AVFormatContext *s, ADTSContext *adts, uint8_t *buf, ...@@ -42,7 +42,7 @@ static int decode_extradata(AVFormatContext *s, ADTSContext *adts, uint8_t *buf,
adts->sample_rate_index = get_bits(&gb, 4); adts->sample_rate_index = get_bits(&gb, 4);
adts->channel_conf = 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); av_log(s, AV_LOG_ERROR, "MPEG-4 AOT %d is not allowed in ADTS\n", adts->objecttype+1);
return -1; return -1;
} }
...@@ -54,6 +54,18 @@ static int decode_extradata(AVFormatContext *s, ADTSContext *adts, uint8_t *buf, ...@@ -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); ff_log_missing_feature(s, "PCE based channel configuration", 0);
return -1; 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; adts->write_adts = 1;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment