From 7b58b6f93d41c0c73a8b35f5203d629b8a675a26 Mon Sep 17 00:00:00 2001 From: Ilya Maximets Date: Wed, 17 Jul 2024 14:00:58 +0200 Subject: [PATCH] match: Fix false-positive snprintf size warning. GCC 14.1.1 of Fedora 41 thinks that 'i' can be in a full range and so 8 bytes is not enough to print it. lib/match.c: In function 'match_format': lib/match.c:1631:45: error: '%d' directive output may be truncated writing between 1 and 11 bytes into a region of size 8 1631 | snprintf(str_i, sizeof(str_i), "%d", i); | ^~ lib/match.c:1631:44: note: directive argument in the range [-2147483646, 1] 1631 | snprintf(str_i, sizeof(str_i), "%d", i); | ^~~~ lib/match.c:1631:13: note: 'snprintf' output between 2 and 12 bytes into a destination of size 8 1631 | snprintf(str_i, sizeof(str_i), "%d", i); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In practice that value can't be larger than 2, but it's not a performance critical code, so let's just increase the size to a maximum 12. Acked-by: Mike Pattrick Signed-off-by: Ilya Maximets --- lib/match.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/match.c b/lib/match.c index 0b9dc4278..9b7e06e0c 100644 --- a/lib/match.c +++ b/lib/match.c @@ -1618,7 +1618,7 @@ match_format(const struct match *match, ds_put_char(s, ','); } for (i = 0; i < FLOW_MAX_VLAN_HEADERS; i++) { - char str_i[8]; + char str_i[12]; if (!wc->masks.vlans[i].tci) { break;