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.

Signd-off-by: Mahdi Faramarzpour <[email protected]>
Fixes: 146e30554a53 ("selftests/xsk: add option to run single test")
---
 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..f2d5c4dd2 100644
--- a/tools/testing/selftests/bpf/xskxceiver.c
+++ b/tools/testing/selftests/bpf/xskxceiver.c
@@ -247,9 +247,10 @@ static void parse_command_line(struct ifobject *ifobj_tx, 
struct ifobject *ifobj
                        opt_print_tests = true;
                        break;
                case 't':
+                       char *eptr;
                        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


Reply via email to