[dpdk-dev] [PATCH v2] examples/vhost: fix string split error handling issue

Cheng Jiang Cheng1.jiang at intel.com
Wed Nov 11 10:08:06 CET 2020


Add checking return value of string split function to fix the
coverity issue.

Fixes: 3a04ecb21420 ("examples/vhost: add async vhost args parsing")
Coverity issue: 363739

Signed-off-by: Cheng Jiang <Cheng1.jiang at intel.com>
---
v2: checked args_nr explicitly

 examples/vhost/ioat.c | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/examples/vhost/ioat.c b/examples/vhost/ioat.c
index b2c74f6537..720c0b0b81 100644
--- a/examples/vhost/ioat.c
+++ b/examples/vhost/ioat.c
@@ -36,7 +36,7 @@ open_ioat(const char *value)
 	int ret = 0;
 	uint16_t i = 0;
 	char *dma_arg[MAX_VHOST_DEVICE];
-	uint8_t args_nr;
+	int args_nr;

 	while (isblank(*addrs))
 		addrs++;
@@ -54,9 +54,18 @@ open_ioat(const char *value)
 	}
 	args_nr = rte_strsplit(substr, strlen(substr),
 			dma_arg, MAX_VHOST_DEVICE, ',');
-	do {
+	if (args_nr <= 0) {
+		ret = -1;
+		goto out;
+	}
+	while (i < args_nr) {
 		char *arg_temp = dma_arg[i];
-		rte_strsplit(arg_temp, strlen(arg_temp), ptrs, 2, '@');
+		uint8_t sub_nr;
+		sub_nr = rte_strsplit(arg_temp, strlen(arg_temp), ptrs, 2, '@');
+		if (sub_nr != 2) {
+			ret = -1;
+			goto out;
+		}

 		start = strstr(ptrs[0], "txd");
 		if (start == NULL) {
@@ -105,7 +114,7 @@ open_ioat(const char *value)

 		dma_info->nr++;
 		i++;
-	} while (i < args_nr);
+	}
 out:
 	free(input);
 	return ret;
--
2.29.2



More information about the dev mailing list