All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] app/testpmd: fix hex string parser input length
@ 2021-11-23  9:00 Gregory Etelson
  2021-11-23 11:57 ` [PATCH v2] " Gregory Etelson
  2021-11-24 12:33 ` [PATCH v3] " Gregory Etelson
  0 siblings, 2 replies; 4+ messages in thread
From: Gregory Etelson @ 2021-11-23  9:00 UTC (permalink / raw)
  To: dev, getelson
  Cc: rasland, Ferruh Yigit, stable, Ori Kam, Xiaoyun Li, Wei Zhao

Current hex string parser assumes input has even characters number.
The parser fails input string with odd length.

The patch parses hex stringhs with even and odd length.

Cc: stable@dpdk.org

Fixes: 169a9fed1f4c ("app/testpmd: fix hex string parser support for flow API")
Signed-off-by: Gregory Etelson <getelson@nvidia.com>
---
 app/test-pmd/cmdline_flow.c | 28 ++++++++++++++--------------
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c
index 1b00ae507b..2b90a4a23a 100644
--- a/app/test-pmd/cmdline_flow.c
+++ b/app/test-pmd/cmdline_flow.c
@@ -7702,9 +7702,7 @@ parse_string(struct context *ctx, const struct token *token,
 static int
 parse_hex_string(const char *src, uint8_t *dst, uint32_t *size)
 {
-	char *c = NULL;
-	uint32_t i, len;
-	char tmp[3];
+	uint32_t left = *size;
 
 	/* Check input parameters */
 	if ((src == NULL) ||
@@ -7714,19 +7712,21 @@ parse_hex_string(const char *src, uint8_t *dst, uint32_t *size)
 		return -1;
 
 	/* Convert chars to bytes */
-	for (i = 0, len = 0; i < *size; i += 2) {
-		snprintf(tmp, 3, "%s", src + i);
-		dst[len++] = strtoul(tmp, &c, 16);
-		if (*c != 0) {
-			len--;
-			dst[len] = 0;
-			*size = len;
-			return -1;
+	while (left) {
+		char tmp[3], *end = tmp;
+		uint32_t read_lim = left & 1 ? 1 : 2;
+
+		snprintf(tmp, read_lim + 1, "%s", src);
+		*dst = strtoul(tmp, &end, 16);
+		if (*end) {
+			*dst = 0;
+			*size = *size - left;
 		}
+		left -= read_lim;
+		src += read_lim;
+		dst++;
 	}
-	dst[len] = 0;
-	*size = len;
-
+	*dst = 0;
 	return 0;
 }
 
-- 
2.34.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-11-24 16:57 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-11-23  9:00 [PATCH] app/testpmd: fix hex string parser input length Gregory Etelson
2021-11-23 11:57 ` [PATCH v2] " Gregory Etelson
2021-11-24 12:33 ` [PATCH v3] " Gregory Etelson
2021-11-24 16:37   ` Ferruh Yigit

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.