From 52a10829ef2294890e75e6045a43b2c06152cf8f Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Mon, 28 Jan 2008 17:27:05 +0000 Subject: [PATCH] * Fix buffer overrun in process (reported by Jesse Chappell) --- src/StretcherProcess.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/StretcherProcess.cpp b/src/StretcherProcess.cpp index 1e8e7d1..f1e5290 100644 --- a/src/StretcherProcess.cpp +++ b/src/StretcherProcess.cpp @@ -597,7 +597,7 @@ RubberBandStretcher::Impl::modifyChunk(size_t channel, size_t outputIncrement, if (i == limit1) range = 2; if (i >= limit2) { range = 3; - if (i + range + 1 > count) range = count - i; + if (i + range + 1 > count) range = count - i - 1; } } @@ -609,16 +609,16 @@ RubberBandStretcher::Impl::modifyChunk(size_t channel, size_t outputIncrement, double peakInPhase = 0.0; double peakOutPhase = 0.0; - size_t p, pp; + int p = -1, pp = -1; for (size_t i = 0; i <= count; ++i) { if (m_options & OptionPhaseIndependent) { p = i; - pp = i-1; + pp = int(i)-1; } else { p = cd.freqPeak[i]; - pp = cd.freqPeak[i-1]; + if (i > 0) pp = int(cd.freqPeak[i-1]); } bool resetThis = phaseReset;