staging: rtl8192e: Fix compiler warning from strncpy()
authorLarry Finger <Larry.Finger@lwfinger.net>
Mon, 27 Aug 2018 18:46:45 +0000 (13:46 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 10 Sep 2018 08:18:32 +0000 (10:18 +0200)
When strncpy() is called with source and destination strings the same
length, gcc 8 warns that there may be an unterminated string. This section
is completely reworked to use the known lengths of the strings.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/rtl8192e/rtllib_softmac.c

index 919231fec09cba4dacab0e4c18b64c4ca385c145..287d0c11fa385b67659ca995dd2fea9e65203ce7 100644 (file)
@@ -1680,19 +1680,19 @@ inline void rtllib_softmac_new_net(struct rtllib_device *ieee,
                   (ssidbroad && !ssidset) || (!ssidbroad && ssidset))) ||
                   (!apset && ssidset && ssidbroad && ssidmatch) ||
                   (ieee->is_roaming && ssidset && ssidbroad && ssidmatch)) {
-                       /* if the essid is hidden replace it with the
-                        * essid provided by the user.
+                       /* Save the essid so that if it is hidden, it is
+                        * replaced with the essid provided by the user.
                         */
                        if (!ssidbroad) {
-                               strncpy(tmp_ssid, ieee->current_network.ssid,
-                                       IW_ESSID_MAX_SIZE);
+                               memcpy(tmp_ssid, ieee->current_network.ssid,
+                                      ieee->current_network.ssid_len);
                                tmp_ssid_len = ieee->current_network.ssid_len;
                        }
-                       memcpy(&ieee->current_network, net,
-                              sizeof(struct rtllib_network));
+                       memcpy(&ieee->current_network, net,
+                              sizeof(ieee->current_network));
                        if (!ssidbroad) {
-                               strncpy(ieee->current_network.ssid, tmp_ssid,
-                                       IW_ESSID_MAX_SIZE);
+                               memcpy(ieee->current_network.ssid, tmp_ssid,
+                                      tmp_ssid_len);
                                ieee->current_network.ssid_len = tmp_ssid_len;
                        }
                        netdev_info(ieee->dev,