|
Message-ID: <CABgxDoLv5SJb+NFaTgHkZceyRWWdj2gw+KrwQN=bNyY1iuwdKA@mail.gmail.com>
Date: Tue, 2 Mar 2021 07:43:51 +0100
From: Romain Perier <romain.perier@...il.com>
To: Chuck Lever <chuck.lever@...cle.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
Hey,
Yeah, but I think it can wait for v2, I am preparing a v2 series with a
better explanation in the commit message
and few improvements.
Thanks,
Romain
Le lun. 1 mars 2021 à 19:25, Chuck Lever <chuck.lever@...cle.com> a écrit :
>
>
> > 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
>
>
>
>
Content of type "text/html" skipped
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.