[PATCH v4 01/11] mem: check fbarray name truncation in secondary process
Thomas Monjalon
thomas at monjalon.net
Thu Feb 5 22:27:33 CET 2026
When compiling in debug mode, the format-truncation check
raises a warning:
In function 'secondary_msl_create_walk':
lib/eal/linux/eal_memalloc.c:1401:50:
error: '%i' directive output may be truncated writing
between 1 and 11 bytes into a region of size between 0 and 63
[-Werror=format-truncation=]
note: 'snprintf' output between 3 and 76 bytes
into a destination of size 64
1401 | snprintf(name, RTE_FBARRAY_NAME_LEN, "%s_%i",
1402 | primary_msl->memseg_arr.name, getpid());
This is a new warning enabled in DPDK 26.03.
It is solved by checking the return of snprintf.
Bugzilla ID: 1878
Signed-off-by: Thomas Monjalon <thomas at monjalon.net>
---
lib/eal/linux/eal_memalloc.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/lib/eal/linux/eal_memalloc.c b/lib/eal/linux/eal_memalloc.c
index d9e8ea76b9..4dee224ac5 100644
--- a/lib/eal/linux/eal_memalloc.c
+++ b/lib/eal/linux/eal_memalloc.c
@@ -1398,8 +1398,13 @@ secondary_msl_create_walk(const struct rte_memseg_list *msl,
local_msl = &local_memsegs[msl_idx];
/* create distinct fbarrays for each secondary */
- snprintf(name, RTE_FBARRAY_NAME_LEN, "%s_%i",
+ ret = snprintf(name, RTE_FBARRAY_NAME_LEN, "%s_%i",
primary_msl->memseg_arr.name, getpid());
+ if (ret >= RTE_FBARRAY_NAME_LEN) {
+ EAL_LOG(ERR, "fbarray name %s_%i is too long",
+ primary_msl->memseg_arr.name, getpid());
+ return -1;
+ }
ret = rte_fbarray_init(&local_msl->memseg_arr, name,
primary_msl->memseg_arr.len,
--
2.52.0
More information about the dev
mailing list