From aa0a70b142127bd61b182923e2d8d6e3f5ba7950 Mon Sep 17 00:00:00 2001 From: Harsh Raj Singhania Date: Sat, 12 Sep 2026 01:03:55 +0530 Subject: [PATCH] pcm: reject invalid multi bindings without assertions Fixes #523 Signed-off-by: Harsh Raj Singhania --- src/pcm/pcm_multi.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/pcm/pcm_multi.c b/src/pcm/pcm_multi.c index 121c4c20..ab42bbc4 100644 --- a/src/pcm/pcm_multi.c +++ b/src/pcm/pcm_multi.c @@ -1121,12 +1121,17 @@ int snd_pcm_multi_open(snd_pcm_t **pcmp, const char *name, } for (i = 0; i < channels_count; ++i) { snd_pcm_multi_channel_t *bind = &multi->channels[i]; - assert(sidxs[i] < (int)slaves_count); - assert(schannels[i] < schannels_count[sidxs[i]]); - bind->slave_idx = sidxs[i]; - bind->slave_channel = schannels[i]; if (sidxs[i] < 0) continue; + if ((unsigned int)sidxs[i] >= slaves_count || + schannels[i] >= schannels_count[sidxs[i]]) { + free(multi->slaves); + free(multi->channels); + free(multi); + return -EINVAL; + } + bind->slave_idx = sidxs[i]; + bind->slave_channel = schannels[i]; } multi->channels_count = channels_count;