Hi, > -----Original Message----- > From: Maxime Coquelin <maxime.coque...@redhat.com> > Sent: Tuesday, November 10, 2020 5:35 PM > To: Jiang, Cheng1 <cheng1.ji...@intel.com>; Xia, Chenbo > <chenbo....@intel.com> > Cc: dev@dpdk.org; Fu, Patrick <patrick...@intel.com>; Yang, YvonneX > <yvonnex.y...@intel.com> > Subject: Re: [PATCH v1] examples/vhost: fix string split error handling issue > > > > On 11/6/20 4:23 AM, Cheng Jiang wrote: > > 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.ji...@intel.com> > > --- > > examples/vhost/ioat.c | 11 ++++++++--- > > 1 file changed, 8 insertions(+), 3 deletions(-) > > > > diff --git a/examples/vhost/ioat.c b/examples/vhost/ioat.c index > > b2c74f6537..04806c02d7 100644 > > --- a/examples/vhost/ioat.c > > +++ b/examples/vhost/ioat.c > > @@ -54,9 +54,14 @@ open_ioat(const char *value) > > } > > args_nr = rte_strsplit(substr, strlen(substr), > > dma_arg, MAX_VHOST_DEVICE, ','); > > I think you should check args_nr > 0 explicitly, and maybe even args_nr > >= 0. And then propagate the error if condition is met. >
Sure, I'll fix it in the next version. Thanks, Cheng > > > - do { > > + 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 +110,7 @@ open_ioat(const char *value) > > > > dma_info->nr++; > > i++; > > - } while (i < args_nr); > > + } > > out: > > free(input); > > return ret; > >