From 653b5994e86205f5db03b88ffa1ae339cd26905a Mon Sep 17 00:00:00 2001 From: Cheng Jiang Date: Wed, 11 Nov 2020 09:08:06 +0000 Subject: [PATCH] examples/vhost: fix string split error handling Add checking return value of string split function to fix the coverity issue. Coverity issue: 363739 Fixes: 3a04ecb21420 ("examples/vhost: add async vhost args parsing") Signed-off-by: Cheng Jiang Reviewed-by: Maxime Coquelin --- 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.20.1