[FFmpeg-cvslog] avcodec/dstdec: Replace AC overread check by sample rate check

Michael Niedermayer git at videolan.org
Fri Jul 3 12:58:51 EEST 2020


ffmpeg | branch: release/4.0 | Michael Niedermayer <michael at niedermayer.cc> | Wed Jul  1 21:27:23 2020 +0200| [2b7c0ae67cc1982ab869a1af0bff38715cdf1755] | committer: Michael Niedermayer

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 at niedermayer.cc>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=2b7c0ae67cc1982ab869a1af0bff38715cdf1755
---

 libavcodec/dstdec.c | 6 ++++++
 1 file changed, 6 insertions(+)

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;
     }



More information about the ffmpeg-cvslog mailing list