shithub: opus

Download patch

ref: 101a71e03bbf860aaafb7090a0e440675cb27660
parent: 9fc8fc4cf432640f284113ba502ee027268b0d9f
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);