From: Tanu Kaskinen Date: Wed, 23 Mar 2011 10:03:43 +0000 (+0200) Subject: alsa-mixer: Make sure that SND_MIXER_SCHN_UNKNOWN isn't used when indexing e->masks. X-Git-Tag: submit/2.0-panda/20130828.192557~731 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=44623a347de67100e9d1059b682f0dcfb89bd273;p=profile%2Fivi%2Fpulseaudio-panda.git alsa-mixer: Make sure that SND_MIXER_SCHN_UNKNOWN isn't used when indexing e->masks. SND_MIXER_SCHN_UNKNOWN is defined as -1, so that's not a good array index... --- diff --git a/src/modules/alsa/alsa-mixer.c b/src/modules/alsa/alsa-mixer.c index eb8b943..b134068 100644 --- a/src/modules/alsa/alsa-mixer.c +++ b/src/modules/alsa/alsa-mixer.c @@ -1453,8 +1453,13 @@ static int element_probe(pa_alsa_element *e, snd_mixer_t *m) { e->n_channels = 1; if (!e->override_map) { - for (p = PA_CHANNEL_POSITION_FRONT_LEFT; p < PA_CHANNEL_POSITION_MAX; p++) + for (p = PA_CHANNEL_POSITION_FRONT_LEFT; p < PA_CHANNEL_POSITION_MAX; p++) { + if (alsa_channel_ids[p] == SND_MIXER_SCHN_UNKNOWN) + continue; + e->masks[alsa_channel_ids[p]][e->n_channels-1] = 0; + } + e->masks[SND_MIXER_SCHN_MONO][e->n_channels-1] = PA_CHANNEL_POSITION_MASK_ALL; } @@ -1510,8 +1515,12 @@ static int element_probe(pa_alsa_element *e, snd_mixer_t *m) { } e->merged_mask = 0; - for (p = PA_CHANNEL_POSITION_FRONT_LEFT; p < PA_CHANNEL_POSITION_MAX; p++) + for (p = PA_CHANNEL_POSITION_FRONT_LEFT; p < PA_CHANNEL_POSITION_MAX; p++) { + if (alsa_channel_ids[p] == SND_MIXER_SCHN_UNKNOWN) + continue; + e->merged_mask |= e->masks[alsa_channel_ids[p]][e->n_channels-1]; + } } } }