From: Stephen Hemminger <stephen@networkplumber.org>
To: dev@dpdk.org
Cc: Stephen Hemminger <stephen@networkplumber.org>,
Tyler Retzlaff <roretzla@linux.microsoft.com>
Subject: [PATCH v3 2/6] test: refactor file prefix arg handling
Date: Mon, 17 Nov 2025 09:52:09 -0800 [thread overview]
Message-ID: <20251117175332.14014-3-stephen@networkplumber.org> (raw)
In-Reply-To: <20251117175332.14014-1-stephen@networkplumber.org>
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
next prev parent reply other threads:[~2025-11-17 17:53 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-15 19:33 [PATCH 0/4] test: eal flags cleanup Stephen Hemminger
2025-11-15 19:33 ` [PATCH 1/4] test: re-enable format-truncation warnings Stephen Hemminger
2025-11-15 19:43 ` Stephen Hemminger
2025-11-15 19:33 ` [PATCH 2/4] test: increase size of memzone name Stephen Hemminger
2025-11-15 19:33 ` [PATCH 3/4] test: refactor file prefix arg handling Stephen Hemminger
2025-11-15 19:33 ` [PATCH 4/4] test: use unit test runner for eal flags Stephen Hemminger
2025-11-16 18:59 ` [PATCH v2 0/5] enable format-overflow on tests Stephen Hemminger
2025-11-16 18:59 ` [PATCH v2 1/5] test: increase size of memzone name Stephen Hemminger
2025-11-16 18:59 ` [PATCH v2 2/5] test: refactor file prefix arg handling Stephen Hemminger
2025-11-16 18:59 ` [PATCH v2 3/5] test: use unit test runner for eal flags Stephen Hemminger
2025-11-16 18:59 ` [PATCH v2 4/5] test: fix format overflow warning in ACL test Stephen Hemminger
2025-11-16 18:59 ` [PATCH v2 5/5] test: re-enable format-truncation warnings Stephen Hemminger
2025-11-17 17:52 ` [PATCH v3 0/6] test suite enable format overflow checks Stephen Hemminger
2025-11-17 17:52 ` [PATCH v3 1/6] test: increase size of memzone name Stephen Hemminger
2025-11-17 17:52 ` Stephen Hemminger [this message]
2025-11-17 17:52 ` [PATCH v3 3/6] test: use unit test runner for eal flags Stephen Hemminger
2025-11-18 2:40 ` fengchengwen
2025-11-17 17:52 ` [PATCH v3 4/6] test: fix format overflow warning in ACL test Stephen Hemminger
2025-11-17 17:52 ` [PATCH v3 5/6] test: fix impossible format-truncation in cfgfiles Stephen Hemminger
2025-11-18 2:22 ` fengchengwen
2025-11-18 14:48 ` Stephen Hemminger
2025-11-17 17:52 ` [PATCH v3 6/6] test: re-enable format-truncation warnings Stephen Hemminger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20251117175332.14014-3-stephen@networkplumber.org \
--to=stephen@networkplumber.org \
--cc=dev@dpdk.org \
--cc=roretzla@linux.microsoft.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.