|
Message-ID: <34ECB5D0-6E9F-4FF0-A41D-C4DD4505EB5C@oracle.com> Date: Mon, 1 Mar 2021 18:25:55 +0000 From: Chuck Lever <chuck.lever@...cle.com> To: Romain Perier <romain.perier@...il.com> CC: Kees Cook <keescook@...omium.org>, "kernel-hardening@...ts.openwall.com" <kernel-hardening@...ts.openwall.com>, Bruce Fields <bfields@...ldses.org>, Linux NFS Mailing List <linux-nfs@...r.kernel.org>, "linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org> Subject: Re: [PATCH 07/20] SUNRPC: Manual replacement of the deprecated strlcpy() with return values > On Feb 22, 2021, at 10:12 AM, Romain Perier <romain.perier@...il.com> wrote: > > The strlcpy() reads the entire source buffer first, it is dangerous if > the source buffer lenght is unbounded or possibility non NULL-terminated. > It can lead to linear read overflows, crashes, etc... > > As recommended in the deprecated interfaces [1], it should be replaced > by strscpy. > > This commit replaces all calls to strlcpy that handle the return values > by the corresponding strscpy calls with new handling of the return > values (as it is quite different between the two functions). > > [1] https://www.kernel.org/doc/html/latest/process/deprecated.html#strlcpy > > Signed-off-by: Romain Perier <romain.perier@...il.com> Hi Romain- I assume you are waiting for a maintainer's Ack? IMHO Trond or Anna should provide it for changes to this particular source file. > --- > net/sunrpc/clnt.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c > index 612f0a641f4c..3c5c4ad8a808 100644 > --- a/net/sunrpc/clnt.c > +++ b/net/sunrpc/clnt.c > @@ -282,7 +282,7 @@ static struct rpc_xprt *rpc_clnt_set_transport(struct rpc_clnt *clnt, > > static void rpc_clnt_set_nodename(struct rpc_clnt *clnt, const char *nodename) > { > - clnt->cl_nodelen = strlcpy(clnt->cl_nodename, > + clnt->cl_nodelen = strscpy(clnt->cl_nodename, > nodename, sizeof(clnt->cl_nodename)); > } > > @@ -422,6 +422,10 @@ static struct rpc_clnt * rpc_new_client(const struct rpc_create_args *args, > nodename = utsname()->nodename; > /* save the nodename */ > rpc_clnt_set_nodename(clnt, nodename); > + if (clnt->cl_nodelen == -E2BIG) { > + err = -ENOMEM; > + goto out_no_path; > + } > > err = rpc_client_register(clnt, args->authflavor, args->client_name); > if (err) > -- Chuck Lever
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.