On Wed, 23 Oct 2024 12:45:46 +0530
Hanumanth Pothula <hpoth...@marvell.com> wrote:

>  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 = (uint8_t)strtoul(value, &end, 0);

Cast will cause truncation of large values.

Maybe:
        v = strtoul(value, &end, 0);
        if (errno != 0 || value == end || *end != '\0' || v > UINT8_MAX) {
...


> +     if ((errno != 0) || (value == end) || *end != '\0') {
> +             ssovf_log_err("invalid %s value %s", key, value);
> +             return -EINVAL;
> +     }
> +
> +     *flag = !!v;
>       return 0;
>  }

Reply via email to