ALSA: control: Fix an out-of-bounds bug in get_ctl_id_hash()
authorZheyu Ma <zheyuma97@gmail.com>
Wed, 24 Aug 2022 08:16:54 +0000 (16:16 +0800)
committerTakashi Iwai <tiwai@suse.de>
Wed, 24 Aug 2022 09:41:53 +0000 (11:41 +0200)
commit6ab55ec0a938c7f943a4edba3d6514f775983887
tree6250c2625787c84cf7fb230fedd604590cf3d19c
parent2e6481a3f3ee6234ce577454e1d88aca55f51d47
ALSA: control: Fix an out-of-bounds bug in get_ctl_id_hash()

Since the user can control the arguments provided to the kernel by the
ioctl() system call, an out-of-bounds bug occurs when the 'id->name'
provided by the user does not end with '\0'.

The following log can reveal it:

[    10.002313] BUG: KASAN: stack-out-of-bounds in snd_ctl_find_id+0x36c/0x3a0
[    10.002895] Read of size 1 at addr ffff888109f5fe28 by task snd/439
[    10.004934] Call Trace:
[    10.007140]  snd_ctl_find_id+0x36c/0x3a0
[    10.007489]  snd_ctl_ioctl+0x6cf/0x10e0

Fix this by checking the bound of 'id->name' in the loop.

Fixes: c27e1efb61c5 ("ALSA: control: Use xarray for faster lookups")
Signed-off-by: Zheyu Ma <zheyuma97@gmail.com>
Link: https://lore.kernel.org/r/20220824081654.3767739-1-zheyuma97@gmail.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/core/control.c