summaryrefslogtreecommitdiff
path: root/sound
diff options
context:
space:
mode:
authorJaroslav Kysela <perex@perex.cz>2023-01-09 16:12:49 +0100
committerTakashi Iwai <tiwai@suse.de>2023-01-09 17:03:24 +0100
commit70051cffb31b5ee09096351c3b41fcae6f89de31 (patch)
treec1549eb36aaabf8b820b8097aecee0f3e9d3b82e /sound
parent291e9da91403e0e628d7692b5ed505100e7b7706 (diff)
ALSA: control-led: use strscpy in set_led_id()
The use of strncpy() in the set_led_id() was incorrect. The len variable should use 'min(sizeof(buf2) - 1, count)' expression. Use strscpy() function to simplify things and handle the error gracefully. Fixes: a135dfb5de15 ("ALSA: led control - add sysfs kcontrol LED marking layer") Reported-by: yang.yang29@zte.com.cn Link: https://lore.kernel.org/alsa-devel/202301091945513559977@zte.com.cn/ Cc: <stable@vger.kernel.org> Signed-off-by: Jaroslav Kysela <perex@perex.cz> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound')
-rw-r--r--sound/core/control_led.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/sound/core/control_led.c b/sound/core/control_led.c
index f975cc85772b..3cadd40100f3 100644
--- a/sound/core/control_led.c
+++ b/sound/core/control_led.c
@@ -530,12 +530,11 @@ static ssize_t set_led_id(struct snd_ctl_led_card *led_card, const char *buf, si
bool attach)
{
char buf2[256], *s, *os;
- size_t len = max(sizeof(s) - 1, count);
struct snd_ctl_elem_id id;
int err;
- strncpy(buf2, buf, len);
- buf2[len] = '\0';
+ if (strscpy(buf2, buf, sizeof(buf2)) < 0)
+ return -E2BIG;
memset(&id, 0, sizeof(id));
id.iface = SNDRV_CTL_ELEM_IFACE_MIXER;
s = buf2;