2022-12-03 06:49:03

by Yang Yang

[permalink] [raw]
Subject: [PATCH linux-next] x86/mce/dev-mcelog: use strscpy() to instead of strncpy()

From: Xu Panda <[email protected]>

The implementation of strscpy() is more robust and safer.
That's now the recommended way to copy NUL terminated strings.

Signed-off-by: Xu Panda <[email protected]>
Signed-off-by: Yang Yang <[email protected]>
---
arch/x86/kernel/cpu/mce/dev-mcelog.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/arch/x86/kernel/cpu/mce/dev-mcelog.c b/arch/x86/kernel/cpu/mce/dev-mcelog.c
index 100fbeebdc72..a05ac0716ecf 100644
--- a/arch/x86/kernel/cpu/mce/dev-mcelog.c
+++ b/arch/x86/kernel/cpu/mce/dev-mcelog.c
@@ -105,8 +105,7 @@ static ssize_t set_trigger(struct device *s, struct device_attribute *attr,
{
char *p;

- strncpy(mce_helper, buf, sizeof(mce_helper));
- mce_helper[sizeof(mce_helper)-1] = 0;
+ strscpy(mce_helper, buf, sizeof(mce_helper));
p = strchr(mce_helper, '\n');

if (p)
--
2.15.2


2022-12-03 22:36:34

by Luck, Tony

[permalink] [raw]
Subject: RE: [PATCH linux-next] x86/mce/dev-mcelog: use strscpy() to instead of strncpy()

> From: Xu Panda <[email protected]>
>
> The implementation of strscpy() is more robust and safer.
> That's now the recommended way to copy NUL terminated strings.

Reviewed-by: Tony Luck <[email protected]>

2022-12-14 21:26:46

by Ricardo Neri

[permalink] [raw]
Subject: Re: [PATCH linux-next] x86/mce/dev-mcelog: use strscpy() to instead of strncpy()

On Sat, Dec 03, 2022 at 02:19:32PM +0800, [email protected] wrote:
> From: Xu Panda <[email protected]>
>
> The implementation of strscpy() is more robust and safer.
> That's now the recommended way to copy NUL terminated strings.

It should read "NULL-terminated strings".

Thanks and BR,
Ricardo

2022-12-14 22:06:57

by Luck, Tony

[permalink] [raw]
Subject: RE: [PATCH linux-next] x86/mce/dev-mcelog: use strscpy() to instead of strncpy()

>> The implementation of strscpy() is more robust and safer.
>> That's now the recommended way to copy NUL terminated strings.
>
> It should read "NULL-terminated strings".

Both "NUL-terminated" and "NULL-terminated" seem to be used in the kernel
source and commit comments. NULL is ahead 124:45 in the source, but it
is closer in the commit logs where the ratio is 129:76.

Single "L" NUL seems technically more accurate as the string terminator is
an ascii NUL character. From man 5 ascii the character name is NUL (though
the description says "null" to muddy the waters)

Oct Dec Hex Char
???????????????????????????????????????????
000 0 00 NUL '\0' (null character)

-Tony

2022-12-14 23:12:10

by Ricardo Neri

[permalink] [raw]
Subject: Re: [PATCH linux-next] x86/mce/dev-mcelog: use strscpy() to instead of strncpy()

On Wed, Dec 14, 2022 at 09:29:59PM +0000, Luck, Tony wrote:
> >> The implementation of strscpy() is more robust and safer.
> >> That's now the recommended way to copy NUL terminated strings.
> >
> > It should read "NULL-terminated strings".
>
> Both "NUL-terminated" and "NULL-terminated" seem to be used in the kernel
> source and commit comments. NULL is ahead 124:45 in the source, but it
> is closer in the commit logs where the ratio is 129:76.
>
> Single "L" NUL seems technically more accurate as the string terminator is
> an ascii NUL character. From man 5 ascii the character name is NUL (though
> the description says "null" to muddy the waters)
>
> Oct Dec Hex Char
> ───────────────────────────────────────────
> 000 0 00 NUL '\0' (null character)

Thanks for the analysis Tony. Indeed, I agree that "NUL-terminated" is
more accurate.

Thanks and BR,
Ricardo

Subject: [tip: x86/platform] x86/mce/dev-mcelog: use strscpy() to instead of strncpy()

The following commit has been merged into the x86/platform branch of tip:

Commit-ID: 7ddf0050a21fdcc025c3cb1055fe3db60df1cd97
Gitweb: https://git.kernel.org/tip/7ddf0050a21fdcc025c3cb1055fe3db60df1cd97
Author: Xu Panda <[email protected]>
AuthorDate: Sat, 03 Dec 2022 14:19:32 +08:00
Committer: Ingo Molnar <[email protected]>
CommitterDate: Sat, 07 Jan 2023 11:47:35 +01:00

x86/mce/dev-mcelog: use strscpy() to instead of strncpy()

The implementation of strscpy() is more robust and safer.
That's now the recommended way to copy NUL terminated strings.

Signed-off-by: Xu Panda <[email protected]>
Signed-off-by: Yang Yang <[email protected]>
Signed-off-by: Ingo Molnar <[email protected]>
Reviewed-by: Tony Luck <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
---
arch/x86/kernel/cpu/mce/dev-mcelog.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/arch/x86/kernel/cpu/mce/dev-mcelog.c b/arch/x86/kernel/cpu/mce/dev-mcelog.c
index 100fbee..a05ac07 100644
--- a/arch/x86/kernel/cpu/mce/dev-mcelog.c
+++ b/arch/x86/kernel/cpu/mce/dev-mcelog.c
@@ -105,8 +105,7 @@ static ssize_t set_trigger(struct device *s, struct device_attribute *attr,
{
char *p;

- strncpy(mce_helper, buf, sizeof(mce_helper));
- mce_helper[sizeof(mce_helper)-1] = 0;
+ strscpy(mce_helper, buf, sizeof(mce_helper));
p = strchr(mce_helper, '\n');

if (p)