ALSA: virmidi: Check card index validity at probe

virmidi driver blindly trusts that the given devptr->id value is
within the proper card index range at probe.  It's OK for the devices
the driver itself creates at the module probe time, but if the device
is bound manually via sysfs interface, this could be -1 as "none", and
this leads to OOB access for index[] and other parameters.

Add a sanity check for the card index and warn/correct it if it's a
value out of the range.

Cc: stable@vger.kernel.org
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Link: https://patch.msgid.link/20260806153227.1460166-5-tiwai@suse.de
This commit is contained in:
Takashi Iwai 2026-08-06 17:32:21 +02:00
parent e0fb960b22
commit b65d5182ec

View File

@ -75,6 +75,12 @@ static int snd_virmidi_probe(struct platform_device *devptr)
int idx, err;
int dev = devptr->id;
if (dev < 0 || dev >= SNDRV_CARDS) {
dev_warn(&devptr->dev,
"Invalid card index %d, using default 0\n", dev);
dev = 0;
}
err = snd_devm_card_new(&devptr->dev, index[dev], id[dev], THIS_MODULE,
sizeof(struct snd_card_virmidi), &card);
if (err < 0)