From 2b10cb8be85c6ce31ff8a217be446178daeb8359 Mon Sep 17 00:00:00 2001 From: Adrian Knoth Date: Mon, 7 Mar 2011 19:03:03 +0100 Subject: [PATCH] hdspmixer: Fix preset activation segfault on AES(32) 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 Signed-off-by: Takashi Iwai --- hdspmixer/src/HDSPMixerWindow.cxx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) 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) { -- 2.47.1