PR #23759 opened by michaelni
URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/23759
Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/23759.patch

Fixes: Timeout
Fixes: 
490144337/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_VORBIS_DEC_fuzzer-4539724776931328
Found-by: continuous fuzzing process 
https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg



>From bb6db6f6000f430306e2b7e6fbd9ae8b94b5fedf Mon Sep 17 00:00:00 2001
From: Michael Niedermayer <[email protected]>
Date: Fri, 10 Jul 2026 02:34:59 +0200
Subject: [PATCH] avcodec/vorbisdec: skip the MDCT for unused channels

Fixes: Timeout
Fixes: 
490144337/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_VORBIS_DEC_fuzzer-4539724776931328
Found-by: continuous fuzzing process 
https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
---
 libavcodec/vorbisdec.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/libavcodec/vorbisdec.c b/libavcodec/vorbisdec.c
index ba99c01307..aeea1b4908 100644
--- a/libavcodec/vorbisdec.c
+++ b/libavcodec/vorbisdec.c
@@ -1740,6 +1740,10 @@ static int vorbis_parse_audio_packet(vorbis_context *vc, 
float **floor_ptr)
 
     for (j = vc->audio_channels-1;j >= 0; j--) {
         ch_res_ptr   = vc->channel_residues + res_chan[j] * blocksize / 2;
+        if (no_residue[j]) {
+            memset(ch_res_ptr, 0, (blocksize / 2) * sizeof(float));
+            continue;
+        }
         vc->fdsp->vector_fmul(floor_ptr[j], floor_ptr[j], ch_res_ptr, 
blocksize / 2);
         mdct_fn(mdct, ch_res_ptr, floor_ptr[j], sizeof(float));
     }
-- 
2.52.0

_______________________________________________
ffmpeg-devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to