dpdk: fix null-termination of strings 19/22019/4
authorElias Rudberg <elias.rudberg@bahnhof.net>
Thu, 12 Sep 2019 12:57:47 +0000 (14:57 +0200)
committerDave Wallace <dwallacelf@gmail.com>
Thu, 12 Sep 2019 14:21:22 +0000 (14:21 +0000)
Fix problem with some strings not being null-terminated,
by using the vec_terminate_c_string macro in two places.
The problem was found using AddressSanitizer.
(Also make sure indentation is OK for those changes.)

Ticket: VPP-1772
Type: fix

Signed-off-by: Elias Rudberg <elias.rudberg@bahnhof.net>
Change-Id: Ib7826e3c322e58b649e2d7f6053786da618a5e9e

src/plugins/dpdk/device/init.c

index a265182..ff0dfc7 100644 (file)
@@ -1388,6 +1388,7 @@ dpdk_config (vlib_main_t * vm, unformat_input_t * input)
       vec_insert (conf->eal_init_args, 2, 3);
       conf->eal_init_args[3] = (u8 *) "-n";
       tmp = format (0, "%d", conf->nchannels);
+      vec_terminate_c_string (tmp);
       conf->eal_init_args[4] = tmp;
     }
 
@@ -1481,6 +1482,8 @@ dpdk_config (vlib_main_t * vm, unformat_input_t * input)
     conf->eal_init_args_str = format (conf->eal_init_args_str, "%s ",
                                      conf->eal_init_args[i]);
 
+  vec_terminate_c_string (conf->eal_init_args_str);
+
   dpdk_log_warn ("EAL init args: %s", conf->eal_init_args_str);
   ret = rte_eal_init (vec_len (conf->eal_init_args),
                      (char **) conf->eal_init_args);