aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenoît Ganne <bganne@cisco.com>2019-09-27 18:08:22 +0200
committerAndrew Yourtchenko <ayourtch@gmail.com>2019-10-07 13:13:41 +0000
commitc3852703415c4bcefc9db4b0a7fc4d417fce550b (patch)
treecfcd31db353f8379ddaf12b642cb7eff6f0c444f
parentc8f447e71ea0da7d3902900f1fd0ab9b68a44b58 (diff)
bonding: fix non-null-terminated C-string
Type: fix Change-Id: Ibb7ba878b049b8b18e890c43fdd6324cb88d63b8 Signed-off-by: Benoît Ganne <bganne@cisco.com> (cherry picked from commit 5c828bc1f24fb5222d6bb634d8e5228ed8b138f0)
-rw-r--r--src/vnet/bonding/cli.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/vnet/bonding/cli.c b/src/vnet/bonding/cli.c
index 4e0d30aa598..014edd28237 100644
--- a/src/vnet/bonding/cli.c
+++ b/src/vnet/bonding/cli.c
@@ -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;