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.
Signed-off-by: Ilya Maximets <[email protected]>
---
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;
--
2.45.2
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev