Re: [PATCH] ALSA: control-led: use strscpy in set_led_id()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 09. 01. 23 14:47, Jaroslav Kysela wrote:
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.

Reported-by: yang.yang29@xxxxxxxxxx
BugLink: https://lore.kernel.org/alsa-devel/202301091945513559977@xxxxxxxxxx/
Cc: <stable@xxxxxxxxxxxxxxx>
Signed-off-by: Jaroslav Kysela <perex@xxxxxxxx>
---
  sound/core/control_led.c | 5 ++---
  1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/sound/core/control_led.c b/sound/core/control_led.c
index f975cc85772b..45c8eb5700c1 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, min(sizeof(buf2), count)) < 0)

Please, don't use this version of path (see v2). This min() expression will strip the last char and buf is '\0' terminated.

v2: https://lore.kernel.org/alsa-devel/20230109150119.342771-1-perex@xxxxxxxx/

				Jaroslav

--
Jaroslav Kysela <perex@xxxxxxxx>
Linux Sound Maintainer; ALSA Project; Red Hat, Inc.



[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux