pci: fix strncpy warnings 40/16840/2
authorStephen Hemminger <stephen@networkplumber.org>
Wed, 16 Jan 2019 18:23:16 +0000 (10:23 -0800)
committerDamjan Marion <dmarion@me.com>
Thu, 17 Jan 2019 09:19:33 +0000 (09:19 +0000)
Doing strncpy(ifr.ifr_name, s, sizeof(ifr.ifr_name)) will cause
a warning about string truncation with GCC 8 (and other tools).
Fix this by using sizeof(ifr.ifr_name) - 1. Also, there is no
need to manually zero the end of the string since the whole
ifr structure is already zeroed by memset.

Change-Id: I9440d602ecdd9f8592b69bab2e77479146d00d76
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
src/vlib/linux/pci.c

index b99f54f..ee3eebf 100644 (file)
@@ -466,8 +466,8 @@ vlib_pci_bind_to_uio (vlib_main_t * vm, vlib_pci_addr_t * addr,
       clib_memset (&ifr, 0, sizeof ifr);
       clib_memset (&drvinfo, 0, sizeof drvinfo);
       ifr.ifr_data = (char *) &drvinfo;
-      strncpy (ifr.ifr_name, e->d_name, sizeof (ifr.ifr_name));
-      ifr.ifr_name[ARRAY_LEN (ifr.ifr_name) - 1] = '\0';
+      strncpy (ifr.ifr_name, e->d_name, sizeof (ifr.ifr_name) - 1);
+
       drvinfo.cmd = ETHTOOL_GDRVINFO;
       if (ioctl (fd, SIOCETHTOOL, &ifr) < 0)
        {
@@ -482,8 +482,8 @@ vlib_pci_bind_to_uio (vlib_main_t * vm, vlib_pci_addr_t * addr,
        continue;
 
       clib_memset (&ifr, 0, sizeof (ifr));
-      strncpy (ifr.ifr_name, e->d_name, sizeof (ifr.ifr_name));
-      ifr.ifr_name[ARRAY_LEN (ifr.ifr_name) - 1] = '\0';
+      strncpy (ifr.ifr_name, e->d_name, sizeof (ifr.ifr_name) - 1);
+
       if (ioctl (fd, SIOCGIFFLAGS, &ifr) < 0)
        {
          error = clib_error_return_unix (0, "ioctl fetch intf %s flags",