* [PATCH linux-next v3] x86/platform/uv: use strscpy to instead of strncpy()
@ 2022-12-09 7:45 yang.yang29
2022-12-09 9:14 ` Andy Shevchenko
0 siblings, 1 reply; 2+ messages in thread
From: yang.yang29 @ 2022-12-09 7:45 UTC (permalink / raw)
To: steve.wahl
Cc: mike.travis, dimitri.sivanich, russ.anderson, dvhart, andy, tglx,
mingo, bp, dave.hansen, x86, hpa, platform-driver-x86,
linux-kernel, xu.panda, yang.yang29, andy.shevchenko
From: Xu Panda <xu.panda@zte.com.cn>
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 <xu.panda@zte.com.cn>
Signed-off-by: Yang Yang <yang.yang29@zte.com>
---
change for v3
- remove the remaining definition of p, and fix the mistake
which leads to eating one character. Thanks to Andy Shevchenko again.
---
arch/x86/platform/uv/uv_nmi.c | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/arch/x86/platform/uv/uv_nmi.c b/arch/x86/platform/uv/uv_nmi.c
index a60af0230e27..a55550b779e1 100644
--- a/arch/x86/platform/uv/uv_nmi.c
+++ b/arch/x86/platform/uv/uv_nmi.c
@@ -202,14 +202,10 @@ static int param_set_action(const char *val, const struct kernel_param *kp)
{
int i;
int n = ARRAY_SIZE(valid_acts);
- char arg[ACTION_LEN], *p;
+ char arg[ACTION_LEN];
/* (remove possible '\n') */
- strncpy(arg, val, ACTION_LEN - 1);
- arg[ACTION_LEN - 1] = '\0';
- p = strchr(arg, '\n');
- if (p)
- *p = '\0';
+ strscpy(arg, val, strnchrnul(val, ACTION_LEN - 1, '\n') - val + 1);
for (i = 0; i < n; i++)
if (!strcmp(arg, valid_acts[i].action))
--
2.15.2
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH linux-next v3] x86/platform/uv: use strscpy to instead of strncpy()
2022-12-09 7:45 [PATCH linux-next v3] x86/platform/uv: use strscpy to instead of strncpy() yang.yang29
@ 2022-12-09 9:14 ` Andy Shevchenko
0 siblings, 0 replies; 2+ messages in thread
From: Andy Shevchenko @ 2022-12-09 9:14 UTC (permalink / raw)
To: yang.yang29
Cc: steve.wahl, mike.travis, dimitri.sivanich, russ.anderson, dvhart,
andy, tglx, mingo, bp, dave.hansen, x86, hpa,
platform-driver-x86, linux-kernel, xu.panda
On Fri, Dec 9, 2022 at 9:45 AM <yang.yang29@zte.com.cn> wrote:
>
> From: Xu Panda <xu.panda@zte.com.cn>
>
> The implementation of strscpy() is more robust and safer.
> That's now the recommended way to copy NUL terminated strings.
...
> + strscpy(arg, val, strnchrnul(val, ACTION_LEN - 1, '\n') - val + 1);
Instead of -1 +1 you should simply use the sizeof(arg) as I mentioned.
strscpy(arg, val, strnchrnul(val, sizeof(arg), '\n') - val);
The returned pointer by strnchrnul() either points to the '\n' or to
'\0' and when we subtract pointer to the start we will get the exact
length of the string. In case it equals ACTION_LEN the last character
will be replaced by '\0'.
Where am I mistaken?
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2022-12-09 9:15 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-12-09 7:45 [PATCH linux-next v3] x86/platform/uv: use strscpy to instead of strncpy() yang.yang29
2022-12-09 9:14 ` Andy Shevchenko
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®