diff options
-rw-r--r-- | test/syscalls/linux/BUILD | 1 | ||||
-rw-r--r-- | test/syscalls/linux/exec_state_workload.cc | 22 |
2 files changed, 12 insertions, 11 deletions
diff --git a/test/syscalls/linux/BUILD b/test/syscalls/linux/BUILD index 2f6704842..7e3ad08a9 100644 --- a/test/syscalls/linux/BUILD +++ b/test/syscalls/linux/BUILD @@ -42,6 +42,7 @@ cc_binary( name = "exec_state_workload", testonly = 1, srcs = ["exec_state_workload.cc"], + deps = ["@com_google_absl//absl/strings"], ) sh_binary( diff --git a/test/syscalls/linux/exec_state_workload.cc b/test/syscalls/linux/exec_state_workload.cc index 725c2977f..028902b14 100644 --- a/test/syscalls/linux/exec_state_workload.cc +++ b/test/syscalls/linux/exec_state_workload.cc @@ -19,10 +19,13 @@ #include <sys/auxv.h> #include <sys/prctl.h> #include <sys/time.h> + #include <iostream> #include <ostream> #include <string> +#include "absl/strings/numbers.h" + // Pretty-print a sigset_t. std::ostream& operator<<(std::ostream& out, const sigset_t& s) { out << "{ "; @@ -138,15 +141,14 @@ int main(int argc, char** argv) { return 1; } - char* end; - uint32_t signo = strtoul(argv[2], &end, 10); - if (end == argv[2]) { + uint32_t signo; + if (!absl::SimpleAtoi(argv[2], &signo)) { std::cerr << "invalid signo: " << argv[2] << std::endl; return 1; } - uintptr_t handler = strtoull(argv[3], &end, 16); - if (end == argv[3]) { + uintptr_t handler; + if (!absl::numbers_internal::safe_strtoi_base(argv[3], &handler, 16)) { std::cerr << "invalid handler: " << std::hex << argv[3] << std::endl; return 1; } @@ -160,9 +162,8 @@ int main(int argc, char** argv) { return 1; } - char* end; - uint32_t signo = strtoul(argv[2], &end, 10); - if (end == argv[2]) { + uint32_t signo; + if (!absl::SimpleAtoi(argv[2], &signo)) { std::cerr << "invalid signo: " << argv[2] << std::endl; return 1; } @@ -176,9 +177,8 @@ int main(int argc, char** argv) { return 1; } - char* end; - uint32_t timer = strtoul(argv[2], &end, 10); - if (end == argv[2]) { + uint32_t timer; + if (!absl::SimpleAtoi(argv[2], &timer)) { std::cerr << "invalid signo: " << argv[2] << std::endl; return 1; } |