diff mbox series

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

Message ID 20230109150119.342771-1-perex@perex.cz (mailing list archive)
State Superseded
Headers show
Series [v2] ALSA: control-led: use strscpy in set_led_id() | expand

Commit Message

Jaroslav Kysela Jan. 9, 2023, 3:01 p.m. UTC
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@zte.com.cn
BugLink: https://lore.kernel.org/alsa-devel/202301091945513559977@zte.com.cn/
Cc: <stable@vger.kernel.org>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>

v1..v2:
  - remove min() expression which strips the last char
---
 sound/core/control_led.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

Comments

Takashi Iwai Jan. 9, 2023, 3:04 p.m. UTC | #1
On Mon, 09 Jan 2023 16:01:18 +0100,
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@zte.com.cn
> BugLink: https://lore.kernel.org/alsa-devel/202301091945513559977@zte.com.cn/

Let's use the normal Link tag instead of BugLink.  The former is
preferred.

Also, it'd be great if you can put the Fixes tag, too.


thanks,

Takashi
Jaroslav Kysela Jan. 9, 2023, 3:13 p.m. UTC | #2
On 09. 01. 23 16:04, Takashi Iwai wrote:
> On Mon, 09 Jan 2023 16:01:18 +0100,
> 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@zte.com.cn
>> BugLink: https://lore.kernel.org/alsa-devel/202301091945513559977@zte.com.cn/
> 
> Let's use the normal Link tag instead of BugLink.  The former is
> preferred.
> 
> Also, it'd be great if you can put the Fixes tag, too.

Done. Sent v3.

			Thanks,
				Jaroslav
diff mbox series

Patch

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;