From: Mahdi Faramarzpour 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 --- v2: - fix style issues v1: https://lore.kernel.org/all/20260217080326.50564-1-mahdifrmz@gmail.com/ --- 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) print_usage(argv); break; case 'h': -- 2.34.1