ALSA: hda/ca0132: fixup buffer overrun at tuning_ctl_set()
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Mon, 13 Mar 2023 00:50:28 +0000 (00:50 +0000)
committerTakashi Iwai <tiwai@suse.de>
Tue, 14 Mar 2023 16:04:53 +0000 (17:04 +0100)
commit98e5eb110095ec77cb6d775051d181edbf9cd3cf
tree11512c5b69e4e2491bd8f501bacbbb95fe59e6b1
parent9026c0bf233db53b86f74f4c620715e94eb32a09
ALSA: hda/ca0132: fixup buffer overrun at tuning_ctl_set()

tuning_ctl_set() might have buffer overrun at (X) if it didn't break
from loop by matching (A).

static int tuning_ctl_set(...)
{
for (i = 0; i < TUNING_CTLS_COUNT; i++)
(A) if (nid == ca0132_tuning_ctls[i].nid)
break;

snd_hda_power_up(...);
(X) dspio_set_param(..., ca0132_tuning_ctls[i].mid, ...);
snd_hda_power_down(...);                ^

return 1;
}

We will get below error by cppcheck

sound/pci/hda/patch_ca0132.c:4229:2: note: After for loop, i has value 12
 for (i = 0; i < TUNING_CTLS_COUNT; i++)
 ^
sound/pci/hda/patch_ca0132.c:4234:43: note: Array index out of bounds
 dspio_set_param(codec, ca0132_tuning_ctls[i].mid, 0x20,
                                           ^
This patch cares non match case.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87sfe9eap7.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/hda/patch_ca0132.c