Hi,

here are patches for two issues found by Valgrind in CLAM 1.4.0 that
are still present in SVN trunk. Both access memory past the end of
an array. The bug in FourierTransform is more severe as it writes
to the memory location and pairs imaginary and real part of unrelated
spectral components.

  Daniel
diff -rwud CLAM-1.4.0.orig/src/Processing/Analysis/Tonal/FourierTransform.cxx 
CLAM-1.4.0/src/Processing/Analysis/Tonal/FourierTransform.cxx
--- CLAM-1.4.0.orig/src/Processing/Analysis/Tonal/FourierTransform.cxx  
2007-07-30 22:33:31.000000000 +0200
+++ CLAM-1.4.0/src/Processing/Analysis/Tonal/FourierTransform.cxx       
2014-07-20 13:58:35.862218133 +0200
@@ -137,7 +137,7 @@
                        spectrum[i] = complexOutput[i/2][0];
                        spectrum[i+1] = - complexOutput[i/2][1];
                }
-               for (int i=1; i<mFrameSize; i+=2)
+               for (int i=2; i<mFrameSize; i+=2)
                {
                        unsigned j = mFrameSize*2-i;
                        spectrum[j] = complexOutput[i/2][0];
diff -rwud CLAM-1.4.0.orig/src/Processing/Analysis/Tonal/ChordSegmentator.hxx 
CLAM-1.4.0/src/Processing/Analysis/Tonal/ChordSegmentator.hxx
--- CLAM-1.4.0.orig/src/Processing/Analysis/Tonal/ChordSegmentator.hxx  
2008-12-12 13:36:48.000000000 +0100
+++ CLAM-1.4.0/src/Processing/Analysis/Tonal/ChordSegmentator.hxx       
2014-07-20 14:12:57.439111882 +0200
@@ -202,8 +202,8 @@
                
                std::vector<double> onsets = _segmentation.onsets();
                std::vector<double> offsets = _segmentation.offsets();
-               unsigned lastSegment = onsets.size();
-               CLAM_ASSERT(segment<lastSegment, "changeChordIfSegmentTooSmall: 
Accessing a segment beyond lastSegment");
+               unsigned lastSegment = onsets.size() - 1;
+               CLAM_ASSERT(segment<=lastSegment, 
"changeChordIfSegmentTooSmall: Accessing a segment beyond lastSegment");
 
                if(offsets[segment]-onsets[segment] < minSegmentLength)
                {
_______________________________________________
clam-devel mailing list
clam-devel@lists.clam-project.org
http://lists.clam-project.org/listinfo.cgi/clam-devel-clam-project.org

Reply via email to