bonding: fix non-null-terminated C-string 36/22536/2
authorBenoît Ganne <bganne@cisco.com>
Fri, 27 Sep 2019 16:08:22 +0000 (18:08 +0200)
committerAndrew Yourtchenko <ayourtch@gmail.com>
Mon, 7 Oct 2019 13:13:41 +0000 (13:13 +0000)
Type: fix

Change-Id: Ibb7ba878b049b8b18e890c43fdd6324cb88d63b8
Signed-off-by: Benoît Ganne <bganne@cisco.com>
(cherry picked from commit 5c828bc1f24fb5222d6bb634d8e5228ed8b138f0)

src/vnet/bonding/cli.c

index 4e0d30a..014edd2 100644 (file)
@@ -192,7 +192,9 @@ bond_dump_ifs (bond_interface_details_t ** out_bondifs)
     hi = vnet_get_hw_interface (vnm, bif->hw_if_index);
     clib_memcpy(bondif->interface_name, hi->name,
                 MIN (ARRAY_LEN (bondif->interface_name) - 1,
-                     strlen ((const char *) hi->name)));
+                     vec_len ((const char *) hi->name)));
+    /* enforce by memset() above */
+    ASSERT(0 == bondif->interface_name[ARRAY_LEN (bondif->interface_name) - 1]);
     bondif->mode = bif->mode;
     bondif->lb = bif->lb;
     bondif->numa_only = bif->numa_only;
@@ -234,7 +236,11 @@ bond_dump_slave_ifs (slave_interface_details_t ** out_slaveifs,
        hi = vnet_get_hw_interface (vnm, sw->hw_if_index);
        clib_memcpy (slaveif->interface_name, hi->name,
                     MIN (ARRAY_LEN (slaveif->interface_name) - 1,
-                         strlen ((const char *) hi->name)));
+                         vec_len ((const char *) hi->name)));
+       /* enforce by memset() above */
+       ASSERT (0 ==
+               slaveif->interface_name[ARRAY_LEN (slaveif->interface_name) -
+                                       1]);
        slaveif->sw_if_index = sif->sw_if_index;
        slaveif->is_passive = sif->is_passive;
        slaveif->is_long_timeout = sif->is_long_timeout;