From a7cb357491bc8adeac23a329685e8ea9aa2d2f33 Mon Sep 17 00:00:00 2001 From: Benoît Ganne Date: Mon, 16 Dec 2019 16:00:14 +0100 Subject: vppinfra: fix cpu flag string overflow MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Type: fix Change-Id: Idb1fff8a172034044bb33d5b271a84d1fd672ef5 Signed-off-by: Benoît Ganne --- src/vppinfra/cpu.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/vppinfra/cpu.c b/src/vppinfra/cpu.c index c1ff7dd27b3..2da87d1bb67 100644 --- a/src/vppinfra/cpu.c +++ b/src/vppinfra/cpu.c @@ -183,12 +183,10 @@ format_cpu_model_name (u8 * s, va_list * args) static inline char const * -flag_skip_prefix (char const *flag) +flag_skip_prefix (char const *flag, const char *pfx, int len) { - if (memcmp (flag, "x86_", sizeof ("x86_") - 1) == 0) - return flag + sizeof ("x86_") - 1; - if (memcmp (flag, "aarch64_", sizeof ("aarch64_") - 1) == 0) - return flag + sizeof ("aarch64_") - 1; + if (0 == strncmp (flag, pfx, len - 1)) + return flag + len - 1; return flag; } @@ -198,13 +196,13 @@ format_cpu_flags (u8 * s, va_list * args) #if defined(__x86_64__) #define _(flag, func, reg, bit) \ if (clib_cpu_supports_ ## flag()) \ - s = format (s, "%s ", flag_skip_prefix(#flag)); + s = format (s, "%s ", flag_skip_prefix(#flag, "x86_", sizeof("x86_"))); foreach_x86_64_flags return s; #undef _ #elif defined(__aarch64__) #define _(flag, bit) \ if (clib_cpu_supports_ ## flag()) \ - s = format (s, "%s ", flag_skip_prefix(#flag)); + s = format (s, "%s ", flag_skip_prefix(#flag, "aarch64_", sizeof("aarch64_"))); foreach_aarch64_flags return s; #undef _ #else /* ! ! __x86_64__ && ! __aarch64__ */ -- cgit 1.2.3-korg