From c82d5789e6de5d3d95848e1ee62b25602d62ca59 Mon Sep 17 00:00:00 2001 From: Jim Harris Date: Wed, 23 Jun 2021 19:38:21 +0000 Subject: [PATCH] accel_perf: check that numeric arguments are non-negative Signed-off-by: Jim Harris Change-Id: Ie512181e7e0537e8319abe0a5b53492c959964d2 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/8491 Tested-by: SPDK CI Jenkins Reviewed-by: Paul Luse Reviewed-by: Changpeng Liu Reviewed-by: Ben Walker Community-CI: Mellanox Build Bot --- examples/accel/perf/accel_perf.c | 41 +++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 9 deletions(-) diff --git a/examples/accel/perf/accel_perf.c b/examples/accel/perf/accel_perf.c index fe5affa4e..251ba2e47 100644 --- a/examples/accel/perf/accel_perf.c +++ b/examples/accel/perf/accel_perf.c @@ -162,33 +162,56 @@ usage(void) static int parse_args(int argc, char *argv) { + int argval; + switch (argc) { case 'b': - g_ops_per_batch = spdk_strtol(optarg, 10); + case 'C': + case 'f': + case 'T': + case 'o': + case 'P': + case 'q': + case 's': + case 't': + argval = spdk_strtol(optarg, 10); + if (argval < 0) { + fprintf(stderr, "-%c option must be non-negative.\n", argc); + usage(); + return 1; + } + break; + default: + break; + }; + + switch (argc) { + case 'b': + g_ops_per_batch = argval; break; case 'C': - g_crc32c_chained_count = spdk_strtol(optarg, 10); + g_crc32c_chained_count = argval; break; case 'f': - g_fill_pattern = (uint8_t)spdk_strtol(optarg, 10); + g_fill_pattern = (uint8_t)argval; break; case 'T': - g_threads_per_core = spdk_strtol(optarg, 10); + g_threads_per_core = argval; break; case 'o': - g_xfer_size_bytes = spdk_strtol(optarg, 10); + g_xfer_size_bytes = argval; break; case 'P': - g_fail_percent_goal = spdk_strtol(optarg, 10); + g_fail_percent_goal = argval; break; case 'q': - g_queue_depth = spdk_strtol(optarg, 10); + g_queue_depth = argval; break; case 's': - g_crc32c_seed = spdk_strtol(optarg, 10); + g_crc32c_seed = argval; break; case 't': - g_time_in_sec = spdk_strtol(optarg, 10); + g_time_in_sec = argval; break; case 'y': g_verify = true;