* [PATCH v4 0/8] tests: enable format truncation checks
[not found] <0251115193409.99740-1-stephen@networkplumber.org>
@ 2025-11-20 16:55 ` Stephen Hemminger
2025-11-20 16:55 ` [PATCH v4 1/8] test: increase size of memzone name Stephen Hemminger
` (7 more replies)
0 siblings, 8 replies; 14+ messages in thread
From: Stephen Hemminger @ 2025-11-20 16:55 UTC (permalink / raw)
To: dev; +Cc: Stephen Hemminger
Enable format truncation warnings on the tests and fix where
there was an issue.
v4 - resolve more warnings found by CI
- simpler fix for cfgfile test
Stephen Hemminger (8):
test: increase size of memzone name
test: refactor file prefix arg handling
test: avoid overflowing huge directory path
test: use unit test runner for eal flags
test: fix format overflow warning in ACL test
test: fix impossible format-truncation in cfgfiles
test: fix format overflow in cryptodev test
test: re-enable format-truncation warnings
app/test/meson.build | 1 -
app/test/test_cfgfile.c | 8 +-
app/test/test_cryptodev.c | 22 ++++-
app/test/test_eal_flags.c | 172 ++++++++++++++++----------------------
app/test/test_memzone.c | 2 +-
app/test/test_table_acl.c | 4 +-
6 files changed, 95 insertions(+), 114 deletions(-)
--
2.51.0
^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH v4 1/8] test: increase size of memzone name
2025-11-20 16:55 ` [PATCH v4 0/8] tests: enable format truncation checks Stephen Hemminger
@ 2025-11-20 16:55 ` Stephen Hemminger
2025-11-20 16:55 ` [PATCH v4 2/8] test: refactor file prefix arg handling Stephen Hemminger
` (6 subsequent siblings)
7 siblings, 0 replies; 14+ messages in thread
From: Stephen Hemminger @ 2025-11-20 16:55 UTC (permalink / raw)
To: dev; +Cc: Stephen Hemminger, Bruce Richardson, Anatoly Burakov
The tests were using a name buffer of 20 characters which could
overflow if number of memory zones got large. The upper limit
is defined as RTE_MEMZONE_NAMESIZE so use that.
In function ‘test_memzone_free’,
inlined from ‘test_memzone’ at ../app/test/test_memzone.c:1117:6:
../app/test/test_memzone.c:52:35: warning: ‘%u’ directive output may be truncated writing between 1 and 10 bytes into a region of size 4 [-Wformat-truncation=]
52 | #define TEST_MEMZONE_NAME(suffix) "MZ_TEST_" suffix
| ^~~~~~~~~~
../app/test/test_memzone.c:931:46: note: in expansion of macro ‘TEST_MEMZONE_NAME’
931 | snprintf(name, sizeof(name), TEST_MEMZONE_NAME("tempzone%u"),
| ^~~~~~~~~~~~~~~~~
../app/test/test_memzone.c:52:35: note: directive argument in the range [0, 2147483647]
52 | #define TEST_MEMZONE_NAME(suffix) "MZ_TEST_" suffix
| ^~~~~~~~~~
../app/test/test_memzone.c:931:46: note: in expansion of macro ‘TEST_MEMZONE_NAME’
931 | snprintf(name, sizeof(name), TEST_MEMZONE_NAME("tempzone%u"),
| ^~~~~~~~~~~~~~~~~
../app/test/test_memzone.c:931:17: note: ‘snprintf’ output between 18 and 27 bytes into a destination of size 20
931 | snprintf(name, sizeof(name), TEST_MEMZONE_NAME("tempzone%u"),
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
932 | i);
|
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
app/test/test_memzone.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/test/test_memzone.c b/app/test/test_memzone.c
index 506725ea41..6586dad18d 100644
--- a/app/test/test_memzone.c
+++ b/app/test/test_memzone.c
@@ -872,7 +872,7 @@ test_memzone_free(void)
{
const struct rte_memzone **mz;
int i;
- char name[20];
+ char name[RTE_MEMZONE_NAMESIZE];
int rc = -1;
mz = rte_calloc("memzone_test", rte_memzone_max_get() + 1,
--
2.51.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v4 2/8] test: refactor file prefix arg handling
2025-11-20 16:55 ` [PATCH v4 0/8] tests: enable format truncation checks Stephen Hemminger
2025-11-20 16:55 ` [PATCH v4 1/8] test: increase size of memzone name Stephen Hemminger
@ 2025-11-20 16:55 ` Stephen Hemminger
2025-11-20 16:55 ` [PATCH v4 3/8] test: avoid overflowing huge directory path Stephen Hemminger
` (5 subsequent siblings)
7 siblings, 0 replies; 14+ messages in thread
From: Stephen Hemminger @ 2025-11-20 16:55 UTC (permalink / raw)
To: dev; +Cc: Stephen Hemminger
Make setting up --file-prefix arg logic into a function,
and avoid impossible case of file prefix path causing overflow
of string.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
app/test/test_eal_flags.c | 126 +++++++++++++-------------------------
1 file changed, 42 insertions(+), 84 deletions(-)
diff --git a/app/test/test_eal_flags.c b/app/test/test_eal_flags.c
index e32f83d3c8..c2e6c00edb 100644
--- a/app/test/test_eal_flags.c
+++ b/app/test/test_eal_flags.c
@@ -121,6 +121,8 @@ test_misc_flags(void)
#define no_shconf "--no-shconf"
#define allow "--allow"
#define vdev "--vdev"
+#define file_prefix "--file-prefix"
+
#define memtest "memtest"
#define memtest1 "memtest1"
#define memtest2 "memtest2"
@@ -312,6 +314,25 @@ get_number_of_sockets(void)
}
#endif
+static const char *
+get_file_prefix(void)
+{
+#ifdef RTE_EXEC_ENV_FREEBSD
+ /* BSD target doesn't support prefixes at this point */
+ return "";
+#else
+ static char prefix[PATH_MAX + sizeof(file_prefix)];
+ char tmp[PATH_MAX];
+
+ if (get_current_prefix(tmp, sizeof(tmp)) == NULL) {
+ printf("Error - unable to get current prefix!\n");
+ return NULL;
+ }
+ snprintf(prefix, sizeof(prefix), file_prefix "=%s", tmp);
+ return prefix;
+#endif
+}
+
/*
* Test that the app doesn't run with invalid allow option.
* Final tests ensures it does run with valid options as sanity check (one
@@ -320,18 +341,10 @@ get_number_of_sockets(void)
static int
test_allow_flag(void)
{
- unsigned i;
-#ifdef RTE_EXEC_ENV_FREEBSD
- /* BSD target doesn't support prefixes at this point */
- const char * prefix = "";
-#else
- char prefix[PATH_MAX], tmp[PATH_MAX];
- if (get_current_prefix(tmp, sizeof(tmp)) == NULL) {
- printf("Error - unable to get current prefix!\n");
+ unsigned int i;
+ const char *prefix = get_file_prefix();
+ if (prefix == NULL)
return -1;
- }
- snprintf(prefix, sizeof(prefix), "--file-prefix=%s", tmp);
-#endif
const char *wlinval[][7] = {
{prgname, prefix, mp_flag,
@@ -387,17 +400,9 @@ test_allow_flag(void)
static int
test_invalid_b_flag(void)
{
-#ifdef RTE_EXEC_ENV_FREEBSD
- /* BSD target doesn't support prefixes at this point */
- const char * prefix = "";
-#else
- char prefix[PATH_MAX], tmp[PATH_MAX];
- if (get_current_prefix(tmp, sizeof(tmp)) == NULL) {
- printf("Error - unable to get current prefix!\n");
+ const char *prefix = get_file_prefix();
+ if (prefix == NULL)
return -1;
- }
- snprintf(prefix, sizeof(prefix), "--file-prefix=%s", tmp);
-#endif
const char *blinval[][5] = {
{prgname, prefix, mp_flag, "-b", "error"},
@@ -491,17 +496,9 @@ test_invalid_vdev_flag(void)
static int
test_invalid_r_flag(void)
{
-#ifdef RTE_EXEC_ENV_FREEBSD
- /* BSD target doesn't support prefixes at this point */
- const char * prefix = "";
-#else
- char prefix[PATH_MAX], tmp[PATH_MAX];
- if (get_current_prefix(tmp, sizeof(tmp)) == NULL) {
- printf("Error - unable to get current prefix!\n");
+ const char *prefix = get_file_prefix();
+ if (prefix == NULL)
return -1;
- }
- snprintf(prefix, sizeof(prefix), "--file-prefix=%s", tmp);
-#endif
const char *rinval[][5] = {
{prgname, prefix, mp_flag, "-r", "error"},
@@ -535,17 +532,9 @@ test_invalid_r_flag(void)
static int
test_missing_c_flag(void)
{
-#ifdef RTE_EXEC_ENV_FREEBSD
- /* BSD target doesn't support prefixes at this point */
- const char * prefix = "";
-#else
- char prefix[PATH_MAX], tmp[PATH_MAX];
- if (get_current_prefix(tmp, sizeof(tmp)) == NULL) {
- printf("Error - unable to get current prefix!\n");
+ const char *prefix = get_file_prefix();
+ if (prefix == NULL)
return -1;
- }
- snprintf(prefix, sizeof(prefix), "--file-prefix=%s", tmp);
-#endif
/* -c flag but no coremask value */
const char *argv1[] = { prgname, prefix, mp_flag, "-c"};
@@ -694,17 +683,9 @@ test_missing_c_flag(void)
static int
test_main_lcore_flag(void)
{
-#ifdef RTE_EXEC_ENV_FREEBSD
- /* BSD target doesn't support prefixes at this point */
- const char *prefix = "";
-#else
- char prefix[PATH_MAX], tmp[PATH_MAX];
- if (get_current_prefix(tmp, sizeof(tmp)) == NULL) {
- printf("Error - unable to get current prefix!\n");
+ const char *prefix = get_file_prefix();
+ if (prefix == NULL)
return -1;
- }
- snprintf(prefix, sizeof(prefix), "--file-prefix=%s", tmp);
-#endif
if (!rte_lcore_is_enabled(0) || !rte_lcore_is_enabled(1))
return TEST_SKIPPED;
@@ -751,17 +732,9 @@ test_main_lcore_flag(void)
static int
test_invalid_n_flag(void)
{
-#ifdef RTE_EXEC_ENV_FREEBSD
- /* BSD target doesn't support prefixes at this point */
- const char * prefix = "";
-#else
- char prefix[PATH_MAX], tmp[PATH_MAX];
- if (get_current_prefix(tmp, sizeof(tmp)) == NULL) {
- printf("Error - unable to get current prefix!\n");
+ const char *prefix = get_file_prefix();
+ if (prefix == NULL)
return -1;
- }
- snprintf(prefix, sizeof(prefix), "--file-prefix=%s", tmp);
-#endif
/* -n flag but no value */
const char *argv1[] = { prgname, prefix, no_huge, no_shconf,
@@ -803,18 +776,12 @@ test_invalid_n_flag(void)
static int
test_no_hpet_flag(void)
{
- char prefix[PATH_MAX] = "";
-
#ifdef RTE_EXEC_ENV_FREEBSD
return 0;
#else
- char tmp[PATH_MAX];
- if (get_current_prefix(tmp, sizeof(tmp)) == NULL) {
- printf("Error - unable to get current prefix!\n");
+ const char *prefix = get_file_prefix();
+ if (prefix == NULL)
return -1;
- }
- snprintf(prefix, sizeof(prefix), "--file-prefix=%s", tmp);
-#endif
/* With --no-hpet */
const char *argv1[] = {prgname, prefix, mp_flag, no_hpet};
@@ -829,6 +796,7 @@ test_no_hpet_flag(void)
printf("Error - process did not run ok without --no-hpet flag\n");
return -1;
}
+#
return 0;
}
@@ -898,6 +866,7 @@ test_no_huge_flag(void)
printf("Error - process run ok with --no-huge and --huge-worker-stack=size flags");
return -1;
}
+#endif
return 0;
}
@@ -913,17 +882,14 @@ test_misc_flags(void)
const char * prefix = "";
const char * nosh_prefix = "";
#else
- char prefix[PATH_MAX], tmp[PATH_MAX];
+ const char *prefix = get_file_prefix();
const char * nosh_prefix = "--file-prefix=noshconf";
FILE * hugedir_handle = NULL;
char line[PATH_MAX] = {0};
unsigned i, isempty = 1;
- if (get_current_prefix(tmp, sizeof(tmp)) == NULL) {
- printf("Error - unable to get current prefix!\n");
+ if (prefix == NULL)
return -1;
- }
- snprintf(prefix, sizeof(prefix), "--file-prefix=%s", tmp);
/*
* get first valid hugepage path
@@ -1525,17 +1491,9 @@ populate_socket_mem_param(int num_sockets, const char *mem,
static int
test_memory_flags(void)
{
-#ifdef RTE_EXEC_ENV_FREEBSD
- /* BSD target doesn't support prefixes at this point */
- const char * prefix = "";
-#else
- char prefix[PATH_MAX], tmp[PATH_MAX];
- if (get_current_prefix(tmp, sizeof(tmp)) == NULL) {
- printf("Error - unable to get current prefix!\n");
+ const char *prefix = get_file_prefix();
+ if (prefix == NULL)
return -1;
- }
- snprintf(prefix, sizeof(prefix), "--file-prefix=%s", tmp);
-#endif
/* valid -m flag and mp flag */
const char *argv0[] = {prgname, prefix, mp_flag,
--
2.51.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v4 3/8] test: avoid overflowing huge directory path
2025-11-20 16:55 ` [PATCH v4 0/8] tests: enable format truncation checks Stephen Hemminger
2025-11-20 16:55 ` [PATCH v4 1/8] test: increase size of memzone name Stephen Hemminger
2025-11-20 16:55 ` [PATCH v4 2/8] test: refactor file prefix arg handling Stephen Hemminger
@ 2025-11-20 16:55 ` Stephen Hemminger
2025-11-21 12:04 ` Burakov, Anatoly
2025-11-20 16:55 ` [PATCH v4 4/8] test: use unit test runner for eal flags Stephen Hemminger
` (4 subsequent siblings)
7 siblings, 1 reply; 14+ messages in thread
From: Stephen Hemminger @ 2025-11-20 16:55 UTC (permalink / raw)
To: dev; +Cc: Stephen Hemminger
Since the tests construct a mulit-part path in huge pages directory,
avoid overflowing the string buffer by limiting the possible
huge page directory. Can never happen in real life, but compiler
gives warnings about string overflow that it could.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
app/test/test_eal_flags.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/app/test/test_eal_flags.c b/app/test/test_eal_flags.c
index c2e6c00edb..e21029255e 100644
--- a/app/test/test_eal_flags.c
+++ b/app/test/test_eal_flags.c
@@ -172,7 +172,7 @@ process_hugefiles(const char * prefix, enum hugepage_action action)
struct dirent *dirent = NULL;
char hugefile_prefix[PATH_MAX] = {0};
- char hugedir[PATH_MAX] = {0};
+ char hugedir[PATH_MAX - NAME_MAX] = {0};
char line[PATH_MAX] = {0};
int fd, lck_result, result = 0;
@@ -873,7 +873,7 @@ test_no_huge_flag(void)
static int
test_misc_flags(void)
{
- char hugepath[PATH_MAX] = {0};
+ char hugepath[PATH_MAX - NAME_MAX] = {0};
char hugepath_dir[PATH_MAX] = {0};
char hugepath_dir2[PATH_MAX] = {0};
char hugepath_dir3[PATH_MAX] = {0};
--
2.51.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v4 4/8] test: use unit test runner for eal flags
2025-11-20 16:55 ` [PATCH v4 0/8] tests: enable format truncation checks Stephen Hemminger
` (2 preceding siblings ...)
2025-11-20 16:55 ` [PATCH v4 3/8] test: avoid overflowing huge directory path Stephen Hemminger
@ 2025-11-20 16:55 ` Stephen Hemminger
2025-11-21 12:06 ` Burakov, Anatoly
2025-11-20 16:55 ` [PATCH v4 5/8] test: fix format overflow warning in ACL test Stephen Hemminger
` (3 subsequent siblings)
7 siblings, 1 reply; 14+ messages in thread
From: Stephen Hemminger @ 2025-11-20 16:55 UTC (permalink / raw)
To: dev; +Cc: Stephen Hemminger
Make the sub tests in eal flags suite into a group
so that they are not individual tests.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
app/test/test_eal_flags.c | 46 +++++++++++++++++++++++++--------------
1 file changed, 30 insertions(+), 16 deletions(-)
diff --git a/app/test/test_eal_flags.c b/app/test/test_eal_flags.c
index e21029255e..f86f25a4e3 100644
--- a/app/test/test_eal_flags.c
+++ b/app/test/test_eal_flags.c
@@ -777,7 +777,7 @@ static int
test_no_hpet_flag(void)
{
#ifdef RTE_EXEC_ENV_FREEBSD
- return 0;
+ return TEST_SKIPPED;
#else
const char *prefix = get_file_prefix();
if (prefix == NULL)
@@ -796,8 +796,8 @@ test_no_hpet_flag(void)
printf("Error - process did not run ok without --no-hpet flag\n");
return -1;
}
-#
return 0;
+#endif
}
/*
@@ -866,7 +866,7 @@ test_no_huge_flag(void)
printf("Error - process run ok with --no-huge and --huge-worker-stack=size flags");
return -1;
}
-#endif
+
return 0;
}
@@ -1208,7 +1208,7 @@ test_file_prefix(void)
char prefix[PATH_MAX] = "";
#ifdef RTE_EXEC_ENV_FREEBSD
- return 0;
+ return TEST_SKIPPED;
#else
if (get_current_prefix(prefix, sizeof(prefix)) == NULL) {
printf("Error - unable to get current prefix!\n");
@@ -1650,15 +1650,29 @@ test_memory_flags(void)
#endif /* !RTE_EXEC_ENV_WINDOWS */
-REGISTER_FAST_TEST(eal_flags_c_opt_autotest, false, false, test_missing_c_flag);
-REGISTER_FAST_TEST(eal_flags_main_opt_autotest, false, false, test_main_lcore_flag);
-REGISTER_FAST_TEST(eal_flags_n_opt_autotest, false, false, test_invalid_n_flag);
-REGISTER_FAST_TEST(eal_flags_hpet_autotest, false, false, test_no_hpet_flag);
-REGISTER_FAST_TEST(eal_flags_no_huge_autotest, false, false, test_no_huge_flag);
-REGISTER_FAST_TEST(eal_flags_a_opt_autotest, false, false, test_allow_flag);
-REGISTER_FAST_TEST(eal_flags_b_opt_autotest, false, false, test_invalid_b_flag);
-REGISTER_FAST_TEST(eal_flags_vdev_opt_autotest, false, false, test_invalid_vdev_flag);
-REGISTER_FAST_TEST(eal_flags_r_opt_autotest, false, false, test_invalid_r_flag);
-REGISTER_FAST_TEST(eal_flags_mem_autotest, false, false, test_memory_flags);
-REGISTER_FAST_TEST(eal_flags_file_prefix_autotest, false, false, test_file_prefix);
-REGISTER_FAST_TEST(eal_flags_misc_autotest, false, false, test_misc_flags);
+static struct unit_test_suite eal_flags_test_suite = {
+ .suite_name = "EAL flags unit test suite",
+ .unit_test_cases = {
+ TEST_CASE(test_missing_c_flag),
+ TEST_CASE(test_main_lcore_flag),
+ TEST_CASE(test_invalid_n_flag),
+ TEST_CASE(test_no_hpet_flag),
+ TEST_CASE(test_no_huge_flag),
+ TEST_CASE(test_allow_flag),
+ TEST_CASE(test_invalid_b_flag),
+ TEST_CASE(test_invalid_vdev_flag),
+ TEST_CASE(test_invalid_r_flag),
+ TEST_CASE(test_memory_flags),
+ TEST_CASE(test_file_prefix),
+ TEST_CASE(test_misc_flags),
+ TEST_CASES_END()
+ }
+};
+
+static int
+test_eal_flags(void)
+{
+ return unit_test_suite_runner(&eal_flags_test_suite);
+}
+
+REGISTER_FAST_TEST(eal_flags_autotest, false, false, test_eal_flags);
--
2.51.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v4 5/8] test: fix format overflow warning in ACL test
2025-11-20 16:55 ` [PATCH v4 0/8] tests: enable format truncation checks Stephen Hemminger
` (3 preceding siblings ...)
2025-11-20 16:55 ` [PATCH v4 4/8] test: use unit test runner for eal flags Stephen Hemminger
@ 2025-11-20 16:55 ` Stephen Hemminger
2025-11-21 12:06 ` Burakov, Anatoly
2025-11-20 16:55 ` [PATCH v4 6/8] test: fix impossible format-truncation in cfgfiles Stephen Hemminger
` (2 subsequent siblings)
7 siblings, 1 reply; 14+ messages in thread
From: Stephen Hemminger @ 2025-11-20 16:55 UTC (permalink / raw)
To: dev; +Cc: Stephen Hemminger, stable, cristian.dumitrescu, Pablo de Lara
This test has an array of input lines, but the two dimensional
array confuses compiler length checks. Convert to an array
of pointers to fixed strings which avoids the problem.
Make both variables static since not shared with other code.
Fixes: 5205954791cb ("app/test: packet framework unit tests")
Cc: stable@dpdk.org
Cc: cristian.dumitrescu@intel.com
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
app/test/test_table_acl.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/app/test/test_table_acl.c b/app/test/test_table_acl.c
index dff9bddfb9..94edf37234 100644
--- a/app/test/test_table_acl.c
+++ b/app/test/test_table_acl.c
@@ -317,7 +317,7 @@ parse_cb_ipv4_rule_del(char *str, struct rte_table_acl_rule_delete_params *v)
* separated by ' : ', just ':'. It's a lot more readable and
* cleaner, IMO.
*/
-char lines[][128] = {
+static const char * const lines[] = {
"@0.0.0.0/0 0.0.0.0/0 0:65535 0:65535 2/0xff", /* Protocol check */
"@192.168.3.1/32 0.0.0.0/0 0:65535 0:65535 0/0", /* Src IP checl */
"@0.0.0.0/0 10.4.4.1/32 0:65535 0:65535 0/0", /* dst IP check */
@@ -325,7 +325,7 @@ char lines[][128] = {
"@0.0.0.0/0 0.0.0.0/0 0:65535 206:206 0/0", /* dst port check */
};
-char line[128];
+static char line[128];
static int
--
2.51.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v4 6/8] test: fix impossible format-truncation in cfgfiles
2025-11-20 16:55 ` [PATCH v4 0/8] tests: enable format truncation checks Stephen Hemminger
` (4 preceding siblings ...)
2025-11-20 16:55 ` [PATCH v4 5/8] test: fix format overflow warning in ACL test Stephen Hemminger
@ 2025-11-20 16:55 ` Stephen Hemminger
2025-11-21 12:09 ` Burakov, Anatoly
2025-11-20 16:55 ` [PATCH v4 7/8] test: fix format overflow in cryptodev test Stephen Hemminger
2025-11-20 16:55 ` [PATCH v4 8/8] test: re-enable format-truncation warnings Stephen Hemminger
7 siblings, 1 reply; 14+ messages in thread
From: Stephen Hemminger @ 2025-11-20 16:55 UTC (permalink / raw)
To: dev; +Cc: Stephen Hemminger, stable, Cristian Dumitrescu, Bruce Richardson
Although, it is not possible on Linux (which always uses /tmp)
the compiler complains about possible snprintf() truncation.
Use existing code to make empty tmp file which puts the
OS specific code in one spot and avoids any races if
two tests are run at once.
Fixes: be22019a58c4 ("test: restore cfgfile tests")
Cc: stable@dpdk.org
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
app/test/test_cfgfile.c | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/app/test/test_cfgfile.c b/app/test/test_cfgfile.c
index b189d9d7a5..eabf155404 100644
--- a/app/test/test_cfgfile.c
+++ b/app/test/test_cfgfile.c
@@ -178,12 +178,8 @@ test_cfgfile_realloc_sections(void)
ret = remove(filename);
TEST_ASSERT_SUCCESS(ret, "Failed to remove file");
- char tmp[PATH_MAX] = "/tmp/";
-#ifdef RTE_EXEC_ENV_WINDOWS
- ret = GetTempPathA(sizeof(tmp), tmp);
- TEST_ASSERT(ret > 0, "Failed to get tmp directory");
-#endif
- snprintf(filename, sizeof(filename), "%s%s", tmp, "cfg_save.ini");
+ ret = make_tmp_file(filename, "save", "");
+ TEST_ASSERT(ret == 0, "Failed to make empty tmp filename for save");
ret = rte_cfgfile_save(cfgfile, filename);
TEST_ASSERT_SUCCESS(ret, "Failed to save to %s", filename);
--
2.51.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v4 7/8] test: fix format overflow in cryptodev test
2025-11-20 16:55 ` [PATCH v4 0/8] tests: enable format truncation checks Stephen Hemminger
` (5 preceding siblings ...)
2025-11-20 16:55 ` [PATCH v4 6/8] test: fix impossible format-truncation in cfgfiles Stephen Hemminger
@ 2025-11-20 16:55 ` Stephen Hemminger
2025-11-21 12:08 ` Burakov, Anatoly
2025-11-20 16:55 ` [PATCH v4 8/8] test: re-enable format-truncation warnings Stephen Hemminger
7 siblings, 1 reply; 14+ messages in thread
From: Stephen Hemminger @ 2025-11-20 16:55 UTC (permalink / raw)
To: dev
Cc: Stephen Hemminger, Akhil Goyal, Fan Zhang, Hemant Agrawal,
Ciara Power, Declan Doherty
The vdev args buffer could in theory get truncated if there were
lots of sockets or lcores. Handle that by checking return value
of snprintf.
Fixes: 8bfdd8a7f0f1 ("test/crypto: refactor to use sub test suites")
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
app/test/test_cryptodev.c | 22 ++++++++++++++++++----
1 file changed, 18 insertions(+), 4 deletions(-)
diff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c
index 9bdd357727..bd6a2d3fa6 100644
--- a/app/test/test_cryptodev.c
+++ b/app/test/test_cryptodev.c
@@ -17713,8 +17713,16 @@ scheduler_testsuite_setup(void)
RTE_LCORE_FOREACH_WORKER(i) {
if (worker_core_count > 1)
break;
- snprintf(vdev_args, sizeof(vdev_args),
- "%s%d", temp_str, i);
+ ret = snprintf(vdev_args, sizeof(vdev_args),
+ "%s%d", temp_str, i);
+
+ /* If too many args the result will have been truncated */
+ if (ret >= VDEV_ARGS_SIZE) {
+ RTE_LOG(ERR, USER1,
+ "Cryptodev scheduler test vdev arg size exceeded\n");
+ return TEST_FAILED;
+ }
+
strcpy(temp_str, vdev_args);
strlcat(temp_str, ";", sizeof(temp_str));
worker_core_count++;
@@ -17728,8 +17736,14 @@ scheduler_testsuite_setup(void)
return TEST_FAILED;
}
strcpy(temp_str, vdev_args);
- snprintf(vdev_args, sizeof(vdev_args), "%s,socket_id=%d",
- temp_str, socket_id);
+ ret = snprintf(vdev_args, sizeof(vdev_args), "%s,socket_id=%d",
+ temp_str, socket_id);
+ if (ret >= VDEV_ARGS_SIZE) {
+ RTE_LOG(ERR, USER1,
+ "Cryptodev scheduler test vdev arg size exceeded\n");
+ return TEST_FAILED;
+ }
+
RTE_LOG(DEBUG, USER1, "vdev_args: %s\n", vdev_args);
nb_devs = rte_cryptodev_device_count_by_driver(
rte_cryptodev_driver_id_get(
--
2.51.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v4 8/8] test: re-enable format-truncation warnings
2025-11-20 16:55 ` [PATCH v4 0/8] tests: enable format truncation checks Stephen Hemminger
` (6 preceding siblings ...)
2025-11-20 16:55 ` [PATCH v4 7/8] test: fix format overflow in cryptodev test Stephen Hemminger
@ 2025-11-20 16:55 ` Stephen Hemminger
7 siblings, 0 replies; 14+ messages in thread
From: Stephen Hemminger @ 2025-11-20 16:55 UTC (permalink / raw)
To: dev; +Cc: Stephen Hemminger, Bruce Richardson
Tests should be built with warnings.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
app/test/meson.build | 1 -
1 file changed, 1 deletion(-)
diff --git a/app/test/meson.build b/app/test/meson.build
index efec42a6bf..b00260c0e9 100644
--- a/app/test/meson.build
+++ b/app/test/meson.build
@@ -260,7 +260,6 @@ cflags += no_wvla_cflag
extra_flags = [
# Strict-aliasing rules are violated by uint8_t[] to context size casts.
'-fno-strict-aliasing',
- '-Wno-format-truncation',
]
foreach arg: extra_flags
--
2.51.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH v4 3/8] test: avoid overflowing huge directory path
2025-11-20 16:55 ` [PATCH v4 3/8] test: avoid overflowing huge directory path Stephen Hemminger
@ 2025-11-21 12:04 ` Burakov, Anatoly
0 siblings, 0 replies; 14+ messages in thread
From: Burakov, Anatoly @ 2025-11-21 12:04 UTC (permalink / raw)
To: Stephen Hemminger, dev
On 11/20/2025 5:55 PM, Stephen Hemminger wrote:
> Since the tests construct a mulit-part path in huge pages directory,
> avoid overflowing the string buffer by limiting the possible
> huge page directory. Can never happen in real life, but compiler
> gives warnings about string overflow that it could.
>
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> ---
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
--
Thanks,
Anatoly
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v4 4/8] test: use unit test runner for eal flags
2025-11-20 16:55 ` [PATCH v4 4/8] test: use unit test runner for eal flags Stephen Hemminger
@ 2025-11-21 12:06 ` Burakov, Anatoly
0 siblings, 0 replies; 14+ messages in thread
From: Burakov, Anatoly @ 2025-11-21 12:06 UTC (permalink / raw)
To: Stephen Hemminger, dev
On 11/20/2025 5:55 PM, Stephen Hemminger wrote:
> Make the sub tests in eal flags suite into a group
> so that they are not individual tests.
>
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> ---
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
--
Thanks,
Anatoly
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v4 5/8] test: fix format overflow warning in ACL test
2025-11-20 16:55 ` [PATCH v4 5/8] test: fix format overflow warning in ACL test Stephen Hemminger
@ 2025-11-21 12:06 ` Burakov, Anatoly
0 siblings, 0 replies; 14+ messages in thread
From: Burakov, Anatoly @ 2025-11-21 12:06 UTC (permalink / raw)
To: Stephen Hemminger, dev; +Cc: stable, cristian.dumitrescu, Pablo de Lara
On 11/20/2025 5:55 PM, Stephen Hemminger wrote:
> This test has an array of input lines, but the two dimensional
> array confuses compiler length checks. Convert to an array
> of pointers to fixed strings which avoids the problem.
> Make both variables static since not shared with other code.
>
> Fixes: 5205954791cb ("app/test: packet framework unit tests")
> Cc: stable@dpdk.org
> Cc: cristian.dumitrescu@intel.com
>
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> ---
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
--
Thanks,
Anatoly
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v4 7/8] test: fix format overflow in cryptodev test
2025-11-20 16:55 ` [PATCH v4 7/8] test: fix format overflow in cryptodev test Stephen Hemminger
@ 2025-11-21 12:08 ` Burakov, Anatoly
0 siblings, 0 replies; 14+ messages in thread
From: Burakov, Anatoly @ 2025-11-21 12:08 UTC (permalink / raw)
To: Stephen Hemminger, dev
Cc: Akhil Goyal, Fan Zhang, Hemant Agrawal, Ciara Power,
Declan Doherty
On 11/20/2025 5:55 PM, Stephen Hemminger wrote:
> The vdev args buffer could in theory get truncated if there were
> lots of sockets or lcores. Handle that by checking return value
> of snprintf.
>
> Fixes: 8bfdd8a7f0f1 ("test/crypto: refactor to use sub test suites")
>
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> ---
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
--
Thanks,
Anatoly
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v4 6/8] test: fix impossible format-truncation in cfgfiles
2025-11-20 16:55 ` [PATCH v4 6/8] test: fix impossible format-truncation in cfgfiles Stephen Hemminger
@ 2025-11-21 12:09 ` Burakov, Anatoly
0 siblings, 0 replies; 14+ messages in thread
From: Burakov, Anatoly @ 2025-11-21 12:09 UTC (permalink / raw)
To: Stephen Hemminger, dev; +Cc: stable, Cristian Dumitrescu, Bruce Richardson
On 11/20/2025 5:55 PM, Stephen Hemminger wrote:
> Although, it is not possible on Linux (which always uses /tmp)
> the compiler complains about possible snprintf() truncation.
>
> Use existing code to make empty tmp file which puts the
> OS specific code in one spot and avoids any races if
> two tests are run at once.
>
> Fixes: be22019a58c4 ("test: restore cfgfile tests")
> Cc: stable@dpdk.org
>
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> ---
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
--
Thanks,
Anatoly
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2025-11-21 12:10 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <0251115193409.99740-1-stephen@networkplumber.org>
2025-11-20 16:55 ` [PATCH v4 0/8] tests: enable format truncation checks Stephen Hemminger
2025-11-20 16:55 ` [PATCH v4 1/8] test: increase size of memzone name Stephen Hemminger
2025-11-20 16:55 ` [PATCH v4 2/8] test: refactor file prefix arg handling Stephen Hemminger
2025-11-20 16:55 ` [PATCH v4 3/8] test: avoid overflowing huge directory path Stephen Hemminger
2025-11-21 12:04 ` Burakov, Anatoly
2025-11-20 16:55 ` [PATCH v4 4/8] test: use unit test runner for eal flags Stephen Hemminger
2025-11-21 12:06 ` Burakov, Anatoly
2025-11-20 16:55 ` [PATCH v4 5/8] test: fix format overflow warning in ACL test Stephen Hemminger
2025-11-21 12:06 ` Burakov, Anatoly
2025-11-20 16:55 ` [PATCH v4 6/8] test: fix impossible format-truncation in cfgfiles Stephen Hemminger
2025-11-21 12:09 ` Burakov, Anatoly
2025-11-20 16:55 ` [PATCH v4 7/8] test: fix format overflow in cryptodev test Stephen Hemminger
2025-11-21 12:08 ` Burakov, Anatoly
2025-11-20 16:55 ` [PATCH v4 8/8] test: re-enable format-truncation warnings Stephen Hemminger
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).