On Fri, Oct 25, 2024 at 4:28 PM Hanumanth Pothula wrote: > > The last argument passed to ssovf_parsekv() is an > unsigned char*, but it is accessed as an integer. > This can lead to an integer overflow. > > Hence, make ensure the argument is accessed as a char > and for better error handling use strtol instead of atoi. > > Bugzilla ID: 1512 > Fixes: 3516327e00fd ("event/octeontx: add selftest to device arguments") > > Signed-off-by: Hanumanth Pothula Missed following tag Tested-by: Ali Alnubani Applied to dpdk-next-net-mrvl/for-main. Thanks > --- > > v2: Use strtoul instead of strtol > v3: Add value boundry check. Here, value can be either 0 or 1. > v4: Commit text update > --- > drivers/event/octeontx/ssovf_evdev.c | 16 +++++++++++++--- > 1 file changed, 13 insertions(+), 3 deletions(-) > > diff --git a/drivers/event/octeontx/ssovf_evdev.c b/drivers/event/octeontx/ssovf_evdev.c > index 3a933b1db7..957fcab04e 100644 > --- a/drivers/event/octeontx/ssovf_evdev.c > +++ b/drivers/event/octeontx/ssovf_evdev.c > @@ -717,10 +717,20 @@ ssovf_close(struct rte_eventdev *dev) > } > > static int > -ssovf_parsekv(const char *key __rte_unused, const char *value, void *opaque) > +ssovf_parsekv(const char *key, const char *value, void *opaque) > { > - int *flag = opaque; > - *flag = !!atoi(value); > + uint8_t *flag = opaque; > + uint64_t v; > + char *end; > + > + errno = 0; > + v = strtoul(value, &end, 0); > + if ((errno != 0) || (value == end) || *end != '\0' || v > 1) { > + ssovf_log_err("invalid %s value %s", key, value); > + return -EINVAL; > + } > + > + *flag = !!v; > return 0; > } > > -- > 2.25.1 >