avcodec/utils: Check sample rate before use for AV_CODEC_ID_BINKAUDIO_DCT in get_audi...
authorMichael Niedermayer <michael@niedermayer.cc>
Tue, 27 Oct 2020 16:21:19 +0000 (17:21 +0100)
committerMichael Niedermayer <michael@niedermayer.cc>
Thu, 29 Oct 2020 19:42:48 +0000 (20:42 +0100)
Fixes: shift exponent 95 is too large for 32-bit type 'int'
Fixes: 26590/clusterfuzz-testcase-minimized-ffmpeg_dem_SMACKER_fuzzer-5120609937522688

Reviewed-by: Peter Ross <pross@xvid.org>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
libavcodec/utils.c

index fb40962..110496c 100644 (file)
@@ -1633,8 +1633,11 @@ static int get_audio_frame_duration(enum AVCodecID id, int sr, int ch, int ba,
 
         if (ch > 0) {
             /* calc from sample rate and channels */
-            if (id == AV_CODEC_ID_BINKAUDIO_DCT)
+            if (id == AV_CODEC_ID_BINKAUDIO_DCT) {
+                if (sr / 22050 > 22)
+                    return 0;
                 return (480 << (sr / 22050)) / ch;
+            }
         }
 
         if (id == AV_CODEC_ID_MP3)