Messages in this thread Patch in this message | | | Date | Tue, 24 Oct 2023 16:46:04 -0700 | From | Kees Cook <> | Subject | Re: [PATCH] s390/sclp: replace deprecated strncpy with strtomem |
| |
On Mon, Oct 23, 2023 at 07:14:49PM +0000, Justin Stitt wrote: > Let's move away from using strncpy() as it is deprecated [1]. > > Instead use strtomem() as `e.id` is already marked as nonstring: > | char id[4] __nonstring;
I'm surprised the compiler didn't complain about this -- I thought that was the point of the __nonstring attribute: to diagnose when used with a string function. Hmpf.
> > We don't need strtomem_pad() because `e` is already memset to 0 -- > rendering any additional NUL-padding useless. > > Link: https://www.kernel.org/doc/html/latest/process/deprecated.html#strncpy-on-nul-terminated-strings [1] > Link: https://github.com/KSPP/linux/issues/90 > Cc: linux-hardening@vger.kernel.org > Signed-off-by: Justin Stitt <justinstitt@google.com> > --- > Note: build-tested only. > > Found with: $ rg "strncpy\(" > --- > drivers/s390/char/sclp.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/s390/char/sclp.c b/drivers/s390/char/sclp.c > index 8f74db689a0c..486cf57a1605 100644 > --- a/drivers/s390/char/sclp.c > +++ b/drivers/s390/char/sclp.c > @@ -81,7 +81,7 @@ static inline void sclp_trace(int prio, char *id, u32 a, u64 b, bool err) > struct sclp_trace_entry e; > > memset(&e, 0, sizeof(e)); > - strncpy(e.id, id, sizeof(e.id)); > + strtomem(e.id, id);
Looks right to me; thanks!
Reviewed-by: Kees Cook <keescook@chromium.org>
-Kees
> e.a = a; > e.b = b; > debug_event(&sclp_debug, prio, &e, sizeof(e)); > > --- > base-commit: 9c5d00cb7b6bbc5a7965d9ab7d223b5402d1f02c > change-id: 20231023-strncpy-drivers-s390-char-sclp-c-bb66226a7eaa > > Best regards, > -- > Justin Stitt <justinstitt@google.com> > >
-- Kees Cook
| |