[alsa-devel] [PATCH 2/8] hdspmixer: Fix preset activation segfault on AES(32)

Adrian Knoth adi at drcomp.erfurt.thur.de
Mon Mar 7 19:03:03 CET 2011


When selecting preset 6 or 7 on AES(32), hdspmixer has caused a segfault
due to indirect out of bound access on the destination label array.

The amount of destinations is the number of physical stereo
pairs, so it's usually half the channel count, in some cases one more if
there are additional headphone jacks.

Signed-off-by: Adrian Knoth <adi at drcomp.erfurt.thur.de>

diff --git a/hdspmixer/src/HDSPMixerWindow.cxx b/hdspmixer/src/HDSPMixerWindow.cxx
index f52470f..8c057e0 100644
--- a/hdspmixer/src/HDSPMixerWindow.cxx
+++ b/hdspmixer/src/HDSPMixerWindow.cxx
@@ -582,9 +582,9 @@ void HDSPMixerWindow::restoreDefaults(int card)
       chnls[0] = 16;
       chnls[1] = 16;
       chnls[2] = 16;
-      maxdest[0] = 16;
-      maxdest[1] = 16;
-      maxdest[2] = 16;
+      maxdest[0] = 8;
+      maxdest[1] = 8;
+      maxdest[2] = 8;
       num_modes = 3;
       break;
      case HDSPeAIO:
@@ -610,6 +610,7 @@ void HDSPMixerWindow::restoreDefaults(int card)
 	/* should never happen */
 	return;
     }
+
     for (int preset = 0; preset < 8; ++preset) {
 	for (int speed = 0; speed < num_modes; ++speed) {
 	    for (int i = 0; i < chnls[speed]; i+=2) {
-- 
1.7.4.1



More information about the Alsa-devel mailing list