[pulseaudio-discuss] [PATCH] alsa-util: don't crash on devices with more than 32 channels

Tanu Kaskinen tanuk at iki.fi
Sat Jan 28 16:08:24 UTC 2017


The pa_channel_map_init_extend() call later in the function crashes if
if ss->channels is greater than PA_CHANNELS_MAX.

Reported here:
https://lists.freedesktop.org/archives/pulseaudio-discuss/2017-January/027404.html
---
 src/modules/alsa/alsa-util.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/modules/alsa/alsa-util.c b/src/modules/alsa/alsa-util.c
index 63d370f52..61fb4903c 100644
--- a/src/modules/alsa/alsa-util.c
+++ b/src/modules/alsa/alsa-util.c
@@ -747,6 +747,13 @@ snd_pcm_t *pa_alsa_open_by_device_string(
             goto fail;
         }
 
+        if (ss->channels > PA_CHANNELS_MAX) {
+            pa_log("Device %s has %u channels, but PulseAudio supports only %u channels. Unable to use the device.",
+                   d, ss->channels, PA_CHANNELS_MAX);
+            snd_pcm_close(pcm_handle);
+            goto fail;
+        }
+
         if (dev)
             *dev = d;
         else
-- 
2.11.0



More information about the pulseaudio-discuss mailing list