diff --git a/test/nvme/aer/aer.c b/test/nvme/aer/aer.c index 10b5b1c2a..afee2909a 100644 --- a/test/nvme/aer/aer.c +++ b/test/nvme/aer/aer.c @@ -36,6 +36,7 @@ #include "spdk/log.h" #include "spdk/nvme.h" #include "spdk/env.h" +#include "spdk/string.h" #define MAX_DEVS 64 @@ -303,6 +304,7 @@ static int parse_args(int argc, char **argv) { int op, rc; + long int val; g_trid.trtype = SPDK_NVME_TRANSPORT_PCIE; snprintf(g_trid.subnqn, sizeof(g_trid.subnqn), "%s", SPDK_NVMF_DISCOVERY_NQN); @@ -310,7 +312,12 @@ parse_args(int argc, char **argv) while ((op = getopt(argc, argv, "n:r:HL:T")) != -1) { switch (op) { case 'n': - expected_ns_test = atoi(optarg); + val = spdk_strtol(optarg, 10); + if (val < 0) { + fprintf(stderr, "Invalid NS attribute notice ID\n"); + return val; + } + expected_ns_test = (uint32_t)val; break; case 'r': if (spdk_nvme_transport_id_parse(&g_trid, optarg) != 0) { diff --git a/test/nvme/overhead/overhead.c b/test/nvme/overhead/overhead.c index f35247a21..83c046805 100644 --- a/test/nvme/overhead/overhead.c +++ b/test/nvme/overhead/overhead.c @@ -545,6 +545,7 @@ static int parse_args(int argc, char **argv) { int op; + long int val; /* default value */ g_io_size_bytes = 0; @@ -557,10 +558,19 @@ parse_args(int argc, char **argv) exit(0); break; case 's': - g_io_size_bytes = atoi(optarg); + val = spdk_strtol(optarg, 10); + if (val < 0) { + fprintf(stderr, "Invalid io size\n"); + return val; + } + g_io_size_bytes = (uint32_t)val; break; case 't': - g_time_in_sec = atoi(optarg); + g_time_in_sec = spdk_strtol(optarg, 10); + if (g_time_in_sec < 0) { + fprintf(stderr, "Invalid run time\n"); + return g_time_in_sec; + } break; case 'H': g_enable_histogram = true; diff --git a/test/nvme/reset/reset.c b/test/nvme/reset/reset.c index fe2004e8e..62f114034 100644 --- a/test/nvme/reset/reset.c +++ b/test/nvme/reset/reset.c @@ -382,6 +382,7 @@ parse_args(int argc, char **argv) const char *workload_type; int op; bool mix_specified = false; + long int val; /* default value */ g_queue_depth = 0; @@ -391,26 +392,35 @@ parse_args(int argc, char **argv) g_rw_percentage = -1; while ((op = getopt(argc, argv, "m:q:s:t:w:M:")) != -1) { - switch (op) { - case 'q': - g_queue_depth = atoi(optarg); - break; - case 's': - g_io_size_bytes = atoi(optarg); - break; - case 't': - g_time_in_sec = atoi(optarg); - break; - case 'w': + if (op == 'w') { workload_type = optarg; - break; - case 'M': - g_rw_percentage = atoi(optarg); - mix_specified = true; - break; - default: + } else if (op == '?') { usage(argv[0]); - return 1; + return -EINVAL; + } else { + val = spdk_strtol(optarg, 10); + if (val < 0) { + fprintf(stderr, "Converting a string to integer failed\n"); + return val; + } + switch (op) { + case 'q': + g_queue_depth = val; + break; + case 's': + g_io_size_bytes = val; + break; + case 't': + g_time_in_sec = val; + break; + case 'M': + g_rw_percentage = val; + mix_specified = true; + break; + default: + usage(argv[0]); + return -EINVAL; + } } }