The Linux Kernel Mailing List
 help / color / mirror / Atom feed
* [PATCH] Fix possible strscpy() buffer overflows
@ 2026-05-10 18:24 Alexander A. Klimov
  2026-05-10 22:08 ` David Laight
  0 siblings, 1 reply; 12+ messages in thread
From: Alexander A. Klimov @ 2026-05-10 18:24 UTC (permalink / raw)
  To: Shubhrajyoti Datta, Borislav Petkov, Tony Luck, Kees Cook,
	Arnd Bergmann, Greg Kroah-Hartman, Nick Li, Liam Girdwood,
	Mark Brown, Jaroslav Kysela, Takashi Iwai
  Cc: linux-edac, Linux Kernel Mailing List, linux-sound

In the changed files, strings were copied like this:

     strscpy(DST, SRC, strlen(SRC));

A buffer overflow would happen if strlen(SRC) > sizeof(DST).
Actually, strscpy() must be used this way:

     strscpy(DST, SRC, sizeof(DST));
     strscpy(DST, SRC); // defaults to sizeof(DST)

Signed-off-by: Alexander A. Klimov <grandmaster@al2klimov.de>
---
  drivers/edac/versalnet_edac.c | 3 +--
  drivers/misc/lkdtm/fortify.c  | 6 +-----
  sound/soc/codecs/fs210x.c     | 2 +-
  3 files changed, 3 insertions(+), 8 deletions(-)

diff --git a/drivers/edac/versalnet_edac.c b/drivers/edac/versalnet_edac.c
index ec13155824..daa140f4db 100644
--- a/drivers/edac/versalnet_edac.c
+++ b/drivers/edac/versalnet_edac.c
@@ -728,8 +728,7 @@ static int rpmsg_probe(struct rpmsg_device *rpdev)
  	pg = (struct mc_priv *)amd_rpmsg_id_table[0].driver_data;
  	chinfo.src = RPMSG_ADDR_ANY;
  	chinfo.dst = rpdev->dst;
-	strscpy(chinfo.name, amd_rpmsg_id_table[0].name,
-		strlen(amd_rpmsg_id_table[0].name));
+	strscpy(chinfo.name, amd_rpmsg_id_table[0].name);

  	pg->ept = rpmsg_create_ept(rpdev, rpmsg_cb, NULL, chinfo);
  	if (!pg->ept)
diff --git a/drivers/misc/lkdtm/fortify.c b/drivers/misc/lkdtm/fortify.c
index 7615a02dfc..9a9159a120 100644
--- a/drivers/misc/lkdtm/fortify.c
+++ b/drivers/misc/lkdtm/fortify.c
@@ -174,11 +174,7 @@ static void lkdtm_FORTIFY_STRSCPY(void)
  	/* Restore src to its initial value. */
  	src[3] = 'b';

-	/*
-	 * Use strlen here so size cannot be known at compile time and there is
-	 * a runtime write overflow.
-	 */
-	strscpy(dst, src, strlen(src));
+	strscpy(dst, src);

  	pr_err("FAIL: strscpy() overflow not detected!\n");
  	pr_expected_config(CONFIG_FORTIFY_SOURCE);
diff --git a/sound/soc/codecs/fs210x.c b/sound/soc/codecs/fs210x.c
index e6195b71ad..eda716f817 100644
--- a/sound/soc/codecs/fs210x.c
+++ b/sound/soc/codecs/fs210x.c
@@ -968,7 +968,7 @@ static int fs210x_effect_scene_info(struct snd_kcontrol *kcontrol,
  	if (scene->name)
  		name = scene->name;

-	strscpy(uinfo->value.enumerated.name, name, strlen(name) + 1);
+	strscpy(uinfo->value.enumerated.name, name);

  	return 0;
  }
-- 
2.54.0


^ permalink raw reply related	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2026-05-11 19:16 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-10 18:24 [PATCH] Fix possible strscpy() buffer overflows Alexander A. Klimov
2026-05-10 22:08 ` David Laight
2026-05-11  1:30   ` Geraldo Nascimento
2026-05-11  6:46     ` Andrei Purdea
2026-05-11 10:38       ` Borislav Petkov
2026-05-11 11:58         ` David Laight
2026-05-11 11:59         ` Andrei Purdea
2026-05-11 12:51           ` Borislav Petkov
2026-05-11 13:13             ` Andrei Purdea
2026-05-11 13:39               ` Borislav Petkov
2026-05-11 15:06                 ` Andrei Purdea
2026-05-11 19:15             ` David Laight

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox