ref: a71ba10f897e02537e9095dd996e54fc6fcd7c04
parent: 41a4c9515d879f84e9107f14937e8bdee26d9cd7
author: Jean-Marc Valin <jmvalin@jmvalin.ca>
date: Fri Aug 11 00:06:52 EDT 2023
Fixes stack overflow for some custom modes This only affects custom modes (builds with --enable-custom-modes) with frame sizes 2.5, 5, 10, and 20ms and sampling rates below 40 kHz. The problem does not affect normal use of Opus (using OpusEncoder/OpusDecoder) even when built with custom modes enabled, but only special applications that use OpusCustomEncoder/OpusCustomDecoder.
--- a/celt/bands.c
+++ b/celt/bands.c
@@ -1450,7 +1450,7 @@
if (encode && resynth)
lowband_scratch = _lowband_scratch;
else
- lowband_scratch = X_+M*eBands[m->nbEBands-1];
+ lowband_scratch = X_+M*eBands[m->effEBands-1];
ALLOC(X_save, resynth_alloc, celt_norm);
ALLOC(Y_save, resynth_alloc, celt_norm);
ALLOC(X_save2, resynth_alloc, celt_norm);
--
⑨