diff options
author | Michael Niedermayer <michael@niedermayer.cc> | 2020-07-01 21:27:23 +0200 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2020-07-03 11:51:17 +0200 |
commit | 2b7c0ae67cc1982ab869a1af0bff38715cdf1755 (patch) | |
tree | bff0140699deafcf52db31c4aa27698b20e1a2ca | |
parent | 6536090792e8c46ef05cff26137d82501625e7a6 (diff) | |
download | ffmpeg-2b7c0ae67cc1982ab869a1af0bff38715cdf1755.tar.gz |
avcodec/dstdec: Replace AC overread check by sample rate check
Real files do skip coding 0 bits at the end, thus this kind of check
does not work reliable.
Fixes: Ticket 8770
Fixes: dst-256fs44-6ch-refdstencoder.dff
The samplerate is specified in ISO/IEC 14496-3:2005(E) as one of 3 fixed
values, this also can be used to limit the duration and avoid the timeout
This reverts commit f6df99dba1ae64b05d08fba8160d13eb9795042f.
(cherry picked from commit 1679f23beb3cfc3639352b3cbe7c08c00189c6b0)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
-rw-r--r-- | libavcodec/dstdec.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/libavcodec/dstdec.c b/libavcodec/dstdec.c index d8f80bd114..d7a82f34ec 100644 --- a/libavcodec/dstdec.c +++ b/libavcodec/dstdec.c @@ -85,6 +85,12 @@ static av_cold int decode_init(AVCodecContext *avctx) return AVERROR_PATCHWELCOME; } + // the sample rate is only allowed to be 64,128,256 * 44100 by ISO/IEC 14496-3:2005(E) + // We are a bit more tolerant here, but this check is needed to bound the size and duration + if (avctx->sample_rate > 512 * 44100) + return AVERROR_INVALIDDATA; + + if (DST_SAMPLES_PER_FRAME(avctx->sample_rate) & 7) { return AVERROR_PATCHWELCOME; } |