On Wed, Feb 18, 2026 at 1:20 AM Mahdi Faramarzpour <[email protected]> wrote:
>
> From: Mahdi Faramarzpour <[email protected]>
>
> This commit fixes the integer parsing of -t option. The cli parser
> only relies on errno to detect parsing errors. The manpage for
> strtol (https://man7.org/linux/man-pages/man3/strtol.3.html)
> states that the said function "MAY" set errno to EINVAL in case the
> conversion fails. Currently on some systems, this leads to a silent
> failure with return value not being exactly documented in the
> manpages (probably zero). The reliable way to validate the input is
> to check whether the endptr has been bumped all the way to the end
> of the string or not.
>
> Fixes: 146e30554a53 ("selftests/xsk: add option to run single test")
> Signed-off-by: Mahdi Faramarzpour <[email protected]>
> ---
> v2:
>   - fix style issues
> v1: https://lore.kernel.org/all/[email protected]/
> ---
>  tools/testing/selftests/bpf/xskxceiver.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/tools/testing/selftests/bpf/xskxceiver.c 
> b/tools/testing/selftests/bpf/xskxceiver.c
> index 05b3cebc5..5e4095fd1 100644
> --- a/tools/testing/selftests/bpf/xskxceiver.c
> +++ b/tools/testing/selftests/bpf/xskxceiver.c
> @@ -200,6 +200,7 @@ static void parse_command_line(struct ifobject *ifobj_tx, 
> struct ifobject *ifobj
>         struct ifobject *ifobj;
>         u32 interface_nb = 0;
>         int option_index, c;
> +       char *eptr;
>
>         opterr = 0;
>
> @@ -248,8 +249,8 @@ static void parse_command_line(struct ifobject *ifobj_tx, 
> struct ifobject *ifobj
>                         break;
>                 case 't':
>                         errno = 0;
> -                       opt_run_test = strtol(optarg, NULL, 0);
> -                       if (errno)
> +                       opt_run_test = strtol(optarg, &eptr, 0);
> +                       if (errno || *eptr)

This is unnecessary. It was required we would have hit segfaults by now.

pw-bot: cr

Reply via email to