From: Matthew Smith Date: Thu, 14 Jan 2021 22:51:57 +0000 (-0600) Subject: dpdk: terminate device devargs string X-Git-Tag: v21.10-rc0~684 X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F78%2F30778%2F2;p=vpp.git dpdk: terminate device devargs string Type: fix When a device is whitelisted with devargs arguments specified, the string that is generated and added to conf->eal_init_args is not explicitly terminated with 0. If the formatted string takes up all of the memory allocated to the vector which stores it and it is used later as a string in a format() or printf() call, any nonzero characters stored in memory at the address immediately following the memory allocated for the vector will be erroneously appended to the string. Terminate the string with 0 to ensure that this does not happen. Change-Id: I20a78d994daad93bf5aecab5c03d705022e882ec Signed-off-by: Matthew Smith --- diff --git a/src/plugins/dpdk/device/init.c b/src/plugins/dpdk/device/init.c index f3d228c5820..a1eead20541 100644 --- a/src/plugins/dpdk/device/init.c +++ b/src/plugins/dpdk/device/init.c @@ -1595,7 +1595,8 @@ dpdk_config (vlib_main_t * vm, unformat_input_t * input) vec_add1 (conf->eal_init_args, tmp); if (devconf->devargs) { - tmp = format (0, "%U,%s", format_vlib_pci_addr, &devconf->pci_addr, devconf->devargs, 0); + tmp = format (0, "%U,%s%c", format_vlib_pci_addr, + &devconf->pci_addr, devconf->devargs, 0); } else {