Re: [Outreachy kernel] [PATCH] staging: rtl8192u: ieee80211: Replaced strncpy() with strscpy()

From: Fabio M. De Francesco
Date: Tue Apr 13 2021 - 09:12:09 EST


On Tuesday, April 13, 2021 2:59:29 PM CEST Greg Kroah-Hartman wrote:
> On Tue, Apr 13, 2021 at 02:30:41PM +0200, Fabio M. De Francesco wrote:
> > Replaced strncpy() with strscpy() because of compilation time warnings
> > about possible truncation of output [-Wstringop-truncation].
>
> build warnings? What build warnings?
>
drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c:1388:5: warning:
‘strncpy’ output may be truncated copying 32 bytes from a string of length
32 [-Wstringop-truncation]
1388 | strncpy(tmp_ssid, ieee->current_network.ssid,
IW_ESSID_MAX_SIZE);
>
> > Furthermore, according to the Linux official documentation, strscpy()
> > is
> > preferred to strncpy.
> >
> > Signed-off-by: Fabio M. De Francesco <fmdefrancesco@xxxxxxxxx>
> > ---
> >
> > drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c
> > b/drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c index
> > 25ea8e1b6b65..aa58eedf5e86 100644
> > --- a/drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c
> > +++ b/drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c
> > @@ -1385,12 +1385,12 @@ inline void ieee80211_softmac_new_net(struct
> > ieee80211_device *ieee, struct ieee>
> > * essid provided by the user.
> > */
> >
> > if (!ssidbroad) {
> >
> > - strncpy(tmp_ssid, ieee-
>current_network.ssid, IW_ESSID_MAX_SIZE);
> > + strscpy(tmp_ssid, ieee-
>current_network.ssid, IW_ESSID_MAX_SIZE);
>
> Are you sure you can just replace this like this?
>
I surely was... but now I'm not anymore, since your review :)

Maybe you mean I have to check possible return of -E2BIG?
Did you mean something else?
May you please elaborate further?

Thanks,

Fabio
>
> > tmp_ssid_len = ieee-
>current_network.ssid_len;
> >
> > }
> > memcpy(&ieee->current_network, net,
sizeof(struct
> > ieee80211_network));
> >
> > - strncpy(ieee->current_network.ssid,
tmp_ssid, IW_ESSID_MAX_SIZE);
> > + strscpy(ieee->current_network.ssid,
tmp_ssid, IW_ESSID_MAX_SIZE);
>
> Same here, are you sure?
>
> thanks,
>
> greg k-h