diff options
author | Dave Brolley <brolley@redhat.com> | 2009-05-19 11:42:20 -0400 |
---|---|---|
committer | Dave Brolley <brolley@redhat.com> | 2009-05-19 11:42:20 -0400 |
commit | 88a931144b278916dd157e0f69636e87f8fdc949 (patch) | |
tree | 4cdd8928f2a0e4e506005e6d864fde0d07ddfedb /main.cxx | |
parent | e9cb523875a37b2d809afbbe0fffae980d8080a1 (diff) | |
parent | c897e941ca645ab1e2aa325e5feaae30cc43060e (diff) | |
download | systemtap-steved-88a931144b278916dd157e0f69636e87f8fdc949.tar.gz systemtap-steved-88a931144b278916dd157e0f69636e87f8fdc949.tar.xz systemtap-steved-88a931144b278916dd157e0f69636e87f8fdc949.zip |
Merge branch 'master' of git://sources.redhat.com/git/systemtap
Diffstat (limited to 'main.cxx')
-rw-r--r-- | main.cxx | 16 |
1 files changed, 11 insertions, 5 deletions
@@ -480,6 +480,7 @@ main (int argc, char * const argv []) while (true) { int long_opt; + char * num_endptr; #define LONG_OPT_KELF 1 #define LONG_OPT_KMAP 2 #define LONG_OPT_IGNORE_VMLINUX 3 @@ -531,8 +532,8 @@ main (int argc, char * const argv []) cerr << "Listing (-l) mode implies pass 2." << endl; usage (s, 1); } - s.last_pass = atoi (optarg); - if (s.last_pass < 1 || s.last_pass > 5) + s.last_pass = (int)strtoul(optarg, &num_endptr, 10); + if (*num_endptr != '\0' || s.last_pass < 1 || s.last_pass > 5) { cerr << "Invalid pass number (should be 1-5)." << endl; usage (s, 1); @@ -639,8 +640,8 @@ main (int argc, char * const argv []) break; case 's': - s.buffer_size = atoi (optarg); - if (s.buffer_size < 1 || s.buffer_size > 4095) + s.buffer_size = (int) strtoul (optarg, &num_endptr, 10); + if (*num_endptr != '\0' || s.buffer_size < 1 || s.buffer_size > 4095) { cerr << "Invalid buffer size (should be 1-4095)." << endl; usage (s, 1); @@ -652,7 +653,12 @@ main (int argc, char * const argv []) break; case 'x': - s.target_pid = atoi(optarg); + s.target_pid = (int) strtoul(optarg, &num_endptr, 10); + if (*num_endptr != '\0') + { + cerr << "Invalid target process ID number." << endl; + usage (s, 1); + } break; case 'D': |