Re: [patch] [SCSI] bnx2i: use strlcpy() instead of memcpy() for strings

Eddie Wai
2012-07-02T17:53:08Z

On Mon, 2012-07-02 at 08:13 -0700, Michael Chan wrote:
> On Mon, 2012-07-02 at 13:48 +0300, Dan Carpenter wrote:
> > On Mon, Jul 02, 2012 at 11:09:19AM +0100, David Laight wrote:
> > > > Subject: [patch] [SCSI] bnx2i: use strlcpy() instead of memcpy() for
> > > strings
> > > >
> > > > DRV_MODULE_VERSION here is "2.7.2.2" which is only 8 chars but we copy
> > > > 12 bytes from the stack so it's a small information leak.
> > > >
> > > > Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
> > > > ---
> > > > This was just added to linux-next yesterday, but I'm not sure
> > > > which tree it came from.
> > > >
> > > > diff --git a/drivers/scsi/bnx2i/bnx2i_init.c
> > > > b/drivers/scsi/bnx2i/bnx2i_init.c
> > > > index 7729a52..b17637a 100644
> > > > --- a/drivers/scsi/bnx2i/bnx2i_init.c
> > > > +++ b/drivers/scsi/bnx2i/bnx2i_init.c
> > > > @@ -400,7 +400,7 @@ int bnx2i_get_stats(void *handle)
> > > > if (!stats)
> > > > return -ENOMEM;
> > > >
> > > > - memcpy(stats->version, DRV_MODULE_VERSION,
> > > sizeof(stats->version));
> > > > + strlcpy(stats->version, DRV_MODULE_VERSION,
> > > sizeof(stats->version));
> > > > memcpy(stats->mac_add1 + 2, hba->cnic->mac_addr, ETH_ALEN);
> > >
> > > Doesn't that leak the original contents of the last bytes of
> > > stats->version instead?
> >
> > I'm pretty sure we set those to zero in bnx2x_handle_drv_info_req().
> >
>
> Yes, bnx2x zeros the whole stats structure, so strlcpy() is correct.
>
> This came from the net-next tree, so David is the right persion to apply
> this. Thanks.
>
> Acked-by: Michael Chan <mchan@broadcom.com>
>
True. strlcpy() is the correct routine to use (instead of strncpy) as
this needs to be NULL terminated. Thanks.

Acked-by: Eddie Wai <eddie.wai@broadcom.com>