From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Laight Subject: RE: [PATCH 1/2] staging: rtl8192e: Fix compiler warning about strncpy Date: Tue, 21 Aug 2018 13:41:59 +0000 Message-ID: References: <20180820175124.23863-1-Larry.Finger@lwfinger.net> <20180820175124.23863-2-Larry.Finger@lwfinger.net> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8BIT Cc: "netdev@vger.kernel.org" , "devel@driverdev.osuosl.org" To: 'Larry Finger' , "gregkh@linuxfoundation.org" Return-path: Received: from eu-smtp-delivery-211.mimecast.com ([207.82.80.211]:30002 "EHLO eu-smtp-delivery-211.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726679AbeHURAf (ORCPT ); Tue, 21 Aug 2018 13:00:35 -0400 In-Reply-To: <20180820175124.23863-2-Larry.Finger@lwfinger.net> Content-Language: en-US Sender: netdev-owner@vger.kernel.org List-ID: From: Larry Finger > Sent: 20 August 2018 18:51 > When strncpy() is called with source and destination strings the same > length, gcc 8 warns that there may be an unterminated string. Using > strlcpy() rather than strncpy() forces a null at the end and quiets the > warning. > > Signed-off-by: Larry Finger > --- > drivers/staging/rtl8192e/rtllib_softmac.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/staging/rtl8192e/rtllib_softmac.c b/drivers/staging/rtl8192e/rtllib_softmac.c > index 919231fec09c..95a8390cb7ac 100644 > --- a/drivers/staging/rtl8192e/rtllib_softmac.c > +++ b/drivers/staging/rtl8192e/rtllib_softmac.c > @@ -1684,14 +1684,14 @@ inline void rtllib_softmac_new_net(struct rtllib_device *ieee, > * essid provided by the user. > */ > if (!ssidbroad) { > - strncpy(tmp_ssid, ieee->current_network.ssid, > + strlcpy(tmp_ssid, ieee->current_network.ssid, > IW_ESSID_MAX_SIZE); > tmp_ssid_len = ieee->current_network.ssid_len; If there is a length, why not use it? Depending on where the data came from the length might need validating. Depending on how tmp_ssid is used it might need zero filling. > } > memcpy(&ieee->current_network, net, > sizeof(struct rtllib_network)); Gah - should be sizeof(ieee->current_network). Or better still a structure assignment. > if (!ssidbroad) { > - strncpy(ieee->current_network.ssid, tmp_ssid, > + strlcpy(ieee->current_network.ssid, tmp_ssid, > IW_ESSID_MAX_SIZE); > ieee->current_network.ssid_len = tmp_ssid_len; Hmmm... this looks like it is restoring the fields. So why not have a temporary ssid buffer that is the size of the actual buffer and user memcpy(). David - Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)