From: Benoît Ganne Date: Thu, 16 Jul 2020 10:03:35 +0000 (+0200) Subject: vppinfra: fix format_c_identifier vector overflow X-Git-Tag: v21.01-rc0~196 X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=1bd6f61820c6c15534ebb04a4b070ba84bf08a9d;p=vpp.git vppinfra: fix format_c_identifier vector overflow In case of vector, we must check length before trying to access element. Also fix wrong DPDK plugin workaround. Type: fix Change-Id: I2ecef1c88ebef2362f48cab0d462699aa43cd4b9 Signed-off-by: Benoît Ganne --- diff --git a/src/plugins/dpdk/device/format.c b/src/plugins/dpdk/device/format.c index dad15052b45..19476cb19dd 100644 --- a/src/plugins/dpdk/device/format.c +++ b/src/plugins/dpdk/device/format.c @@ -710,12 +710,10 @@ format_dpdk_device (u8 * s, va_list * args) xstat = vec_elt_at_index(xd->xstats, i); if (verbose == 2 || (verbose && xstat->value)) { - /* format_c_identifier doesn't like c strings inside vector */ - u8 * name = format(0,"%s", xstat_names[i].name); xs = format(xs, "\n%U%-38U%16Lu", format_white_space, indent + 4, - format_c_identifier, name, xstat->value); - vec_free(name); + format_c_identifier, xstat_names[i].name, + xstat->value); } } /* *INDENT-ON* */ diff --git a/src/vppinfra/std-formats.c b/src/vppinfra/std-formats.c index b771b947e27..62d309e2fb0 100644 --- a/src/vppinfra/std-formats.c +++ b/src/vppinfra/std-formats.c @@ -281,7 +281,7 @@ format_c_identifier (u8 * s, va_list * va) l = vec_len (id); if (id) - for (i = 0; id[i] != 0 && i < l; i++) + for (i = 0; i < l && id[i] != 0; i++) { u8 c = id[i];