Re: KASAN: slab-out-of-bounds Read in string (2)

From: J. Bruce Fields
Date: Thu Oct 25 2018 - 12:19:30 EST


On Thu, Oct 25, 2018 at 06:17:25PM +0300, Amir Goldstein wrote:
> On Thu, Oct 25, 2018 at 6:02 PM Bruce Fields <bfields@xxxxxxxxxxxx> wrote:
>
> > > > So I guess it has fallen between the cracks.
> > > > Feel free to send a patch to Jeff.
> > > >
> > > > Thanks,
> > > > Amir.
> > >
> > > Actually, this should probably go to Bruce, as he mostly takes care of
> > > lockd. Patch looks correct though.
> >
> > Yes, if you could resend I'd be happy to handle it.--b.
>
> Attached.

Thanks, queuing it up for 4.20 and stable.

--b.

> Thanks,
> Amir.

> From 40000f4dcbd5dd18a80efb6aef010f1164985583 Mon Sep 17 00:00:00 2001
> From: Amir Goldstein <amir73il@xxxxxxxxx>
> Date: Fri, 28 Sep 2018 20:41:48 +0300
> Subject: [PATCH] lockd: fix access beyond unterminated strings in prints
>
> printk format used %*s instead of %.*s, so hostname_len does not limit
> the number of bytes accessed from hostname.
>
> Signed-off-by: Amir Goldstein <amir73il@xxxxxxxxx>
> ---
> fs/lockd/host.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/fs/lockd/host.c b/fs/lockd/host.c
> index d35cd6be0675..93fb7cf0b92b 100644
> --- a/fs/lockd/host.c
> +++ b/fs/lockd/host.c
> @@ -341,7 +341,7 @@ struct nlm_host *nlmsvc_lookup_host(const struct svc_rqst *rqstp,
> };
> struct lockd_net *ln = net_generic(net, lockd_net_id);
>
> - dprintk("lockd: %s(host='%*s', vers=%u, proto=%s)\n", __func__,
> + dprintk("lockd: %s(host='%.*s', vers=%u, proto=%s)\n", __func__,
> (int)hostname_len, hostname, rqstp->rq_vers,
> (rqstp->rq_prot == IPPROTO_UDP ? "udp" : "tcp"));
>
> --
> 2.17.1
>