Message ID | 20230517201349.never.582-kees@kernel.org (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | checkpatch: Check for strcpy and strncpy too | expand |
On Wed, 2023-05-17 at 13:13 -0700, Kees Cook wrote: > Warn about strcpy(), strncpy(), and strlcpy(). Suggest strscpy() and > include pointers to the open KSPP issues for each, which has further > details and replacement procedures. > > Cc: Andy Whitcroft <apw@canonical.com> > Cc: Joe Perches <joe@perches.com> > Cc: Dwaipayan Ray <dwaipayanray1@gmail.com> > Cc: Lukas Bulwahn <lukas.bulwahn@gmail.com> > Signed-off-by: Kees Cook <keescook@chromium.org> > --- > scripts/checkpatch.pl | 14 +++++++++++++- > 1 file changed, 13 insertions(+), 1 deletion(-) > > diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl > index b30114d637c4..a90e0ede53ad 100755 > --- a/scripts/checkpatch.pl > +++ b/scripts/checkpatch.pl > @@ -6997,10 +6997,22 @@ sub process { > # } > # } > > +# strcpy uses that should likely be strscpy > + if ($line =~ /\bstrcpy\s*\(/) { > + WARN("STRCPY", > + "Use of strcpy has been replaced with strscpy - see: https://github.com/KSPP/linux/issues/88\n" . $herecurr); I would prefer something like "Prefer strscpy over strcpy etc..." as there are just too many existing uses of strcpy that can not easily be converted. $ git grep -w strcpy -- "*.[chS]" | wc -l 2015 > + } > + > # strlcpy uses that should likely be strscpy > if ($line =~ /\bstrlcpy\s*\(/) { > WARN("STRLCPY", > - "Prefer strscpy over strlcpy - see: https://lore.kernel.org/r/CAHk-=wgfRnXz0W3D37d01q3JFkr_i_uTL=V6A6G1oUZcprmknw\@mail.gmail.com/\n" . $herecurr); > + "Use of strlcpy has been replaced with strscpy - see: https://github.com/KSPP/linux/issues/89\n" . $herecurr); > + } > + > +# strncpy uses that should likely be strscpy or strscpy_pad > + if ($line =~ /\bstrncpy\s*\(/) { > + WARN("STRNCPY", > + "Prefer strscpy, strscpy_pad, or __nonstring over strncpy - see: https://github.com/KSPP/linux/issues/90\n" . $herecurr); > } > > # typecasts on min/max could be min_t/max_t
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index b30114d637c4..a90e0ede53ad 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl @@ -6997,10 +6997,22 @@ sub process { # } # } +# strcpy uses that should likely be strscpy + if ($line =~ /\bstrcpy\s*\(/) { + WARN("STRCPY", + "Use of strcpy has been replaced with strscpy - see: https://github.com/KSPP/linux/issues/88\n" . $herecurr); + } + # strlcpy uses that should likely be strscpy if ($line =~ /\bstrlcpy\s*\(/) { WARN("STRLCPY", - "Prefer strscpy over strlcpy - see: https://lore.kernel.org/r/CAHk-=wgfRnXz0W3D37d01q3JFkr_i_uTL=V6A6G1oUZcprmknw\@mail.gmail.com/\n" . $herecurr); + "Use of strlcpy has been replaced with strscpy - see: https://github.com/KSPP/linux/issues/89\n" . $herecurr); + } + +# strncpy uses that should likely be strscpy or strscpy_pad + if ($line =~ /\bstrncpy\s*\(/) { + WARN("STRNCPY", + "Prefer strscpy, strscpy_pad, or __nonstring over strncpy - see: https://github.com/KSPP/linux/issues/90\n" . $herecurr); } # typecasts on min/max could be min_t/max_t
Warn about strcpy(), strncpy(), and strlcpy(). Suggest strscpy() and include pointers to the open KSPP issues for each, which has further details and replacement procedures. Cc: Andy Whitcroft <apw@canonical.com> Cc: Joe Perches <joe@perches.com> Cc: Dwaipayan Ray <dwaipayanray1@gmail.com> Cc: Lukas Bulwahn <lukas.bulwahn@gmail.com> Signed-off-by: Kees Cook <keescook@chromium.org> --- scripts/checkpatch.pl | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-)