From: Benoît Ganne Date: Wed, 13 Oct 2021 09:35:15 +0000 (+0200) Subject: dpdk: fix vmbus device name parsing X-Git-Tag: v22.06-rc0~403 X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=82f618c35f4a7182a98fda69fa07f2335a7d03ea;p=vpp.git dpdk: fix vmbus device name parsing unformat_init_vector() expects a vector, not a NULL-terminated C-string. Type: fix Change-Id: I20a266243f63d94b0c6fe24e25ee8346c08c8ff2 Signed-off-by: Benoît Ganne --- diff --git a/src/plugins/dpdk/device/init.c b/src/plugins/dpdk/device/init.c index b64f76bf185..f9927dbeebc 100644 --- a/src/plugins/dpdk/device/init.c +++ b/src/plugins/dpdk/device/init.c @@ -287,14 +287,15 @@ dpdk_lib_init (dpdk_main_t * dm) if (vmbus_dev) { unformat_input_t input_vmbus; - - unformat_init_vector (&input_vmbus, (u8 *) dev_info.device->name); + unformat_init_string (&input_vmbus, dev_info.device->name, + strlen (dev_info.device->name)); if (unformat (&input_vmbus, "%U", unformat_vlib_vmbus_addr, &vmbus_addr)) { p = mhash_get (&dm->conf->device_config_index_by_vmbus_addr, &vmbus_addr); } + unformat_free (&input_vmbus); } if (p) diff --git a/src/vppinfra/format.h b/src/vppinfra/format.h index 70882adac99..cad9b0e0ef2 100644 --- a/src/vppinfra/format.h +++ b/src/vppinfra/format.h @@ -242,8 +242,8 @@ uword va_unformat (unformat_input_t * i, const char *fmt, va_list * args); void unformat_init_command_line (unformat_input_t * input, char *argv[]); /* Setup for unformat of given string. */ -void unformat_init_string (unformat_input_t * input, - char *string, int string_len); +void unformat_init_string (unformat_input_t *input, const char *string, + int string_len); always_inline void unformat_init_cstring (unformat_input_t * input, char *string) diff --git a/src/vppinfra/unformat.c b/src/vppinfra/unformat.c index 172182f8a34..0f6da4fd3b9 100644 --- a/src/vppinfra/unformat.c +++ b/src/vppinfra/unformat.c @@ -1026,7 +1026,8 @@ unformat_init_command_line (unformat_input_t * input, char *argv[]) } __clib_export void -unformat_init_string (unformat_input_t * input, char *string, int string_len) +unformat_init_string (unformat_input_t *input, const char *string, + int string_len) { unformat_init (input, 0, 0); if (string_len > 0)