bench: fail early if user inputs invalid value for SECP256K1_BENCH_ITERS
In this change the get_iters function was updated to print an error message and then return 0. In the functions that use get_iters they print the help text and then EXIT_FAILURE
This commit is contained in:
@@ -177,8 +177,6 @@ int main(int argc, char** argv) {
|
|||||||
bench_data data;
|
bench_data data;
|
||||||
|
|
||||||
int d = argc == 1;
|
int d = argc == 1;
|
||||||
int default_iters = 20000;
|
|
||||||
int iters = get_iters(default_iters);
|
|
||||||
|
|
||||||
/* Check for invalid user arguments */
|
/* Check for invalid user arguments */
|
||||||
char* valid_args[] = {"ecdsa", "verify", "ecdsa_verify", "sign", "ecdsa_sign", "ecdh", "recover",
|
char* valid_args[] = {"ecdsa", "verify", "ecdsa_verify", "sign", "ecdsa_sign", "ecdh", "recover",
|
||||||
@@ -188,6 +186,13 @@ int main(int argc, char** argv) {
|
|||||||
size_t valid_args_size = sizeof(valid_args)/sizeof(valid_args[0]);
|
size_t valid_args_size = sizeof(valid_args)/sizeof(valid_args[0]);
|
||||||
int invalid_args = have_invalid_args(argc, argv, valid_args, valid_args_size);
|
int invalid_args = have_invalid_args(argc, argv, valid_args, valid_args_size);
|
||||||
|
|
||||||
|
int default_iters = 20000;
|
||||||
|
int iters = get_iters(default_iters);
|
||||||
|
if (iters == 0) {
|
||||||
|
help(default_iters);
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
if (argc > 1) {
|
if (argc > 1) {
|
||||||
if (have_flag(argc, argv, "-h")
|
if (have_flag(argc, argv, "-h")
|
||||||
|| have_flag(argc, argv, "--help")
|
|| have_flag(argc, argv, "--help")
|
||||||
|
|||||||
@@ -150,7 +150,13 @@ static int have_invalid_args(int argc, char** argv, char** valid_args, size_t n)
|
|||||||
static int get_iters(int default_iters) {
|
static int get_iters(int default_iters) {
|
||||||
char* env = getenv("SECP256K1_BENCH_ITERS");
|
char* env = getenv("SECP256K1_BENCH_ITERS");
|
||||||
if (env) {
|
if (env) {
|
||||||
return strtol(env, NULL, 0);
|
char* endptr;
|
||||||
|
long int iters = strtol(env, &endptr, 0);
|
||||||
|
if (*endptr != '\0' || iters <= 0) {
|
||||||
|
printf("Error: Value of SECP256K1_BENCH_ITERS is not a positive integer: %s\n\n", env);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return iters;
|
||||||
} else {
|
} else {
|
||||||
return default_iters;
|
return default_iters;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -313,6 +313,10 @@ int main(int argc, char **argv) {
|
|||||||
|
|
||||||
int default_iters = 10000;
|
int default_iters = 10000;
|
||||||
int iters = get_iters(default_iters);
|
int iters = get_iters(default_iters);
|
||||||
|
if (iters == 0) {
|
||||||
|
help(argv, default_iters);
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
data.ecmult_multi = secp256k1_ecmult_multi_var;
|
data.ecmult_multi = secp256k1_ecmult_multi_var;
|
||||||
|
|
||||||
|
|||||||
@@ -385,9 +385,13 @@ static void bench_context(void* arg, int iters) {
|
|||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
bench_inv data;
|
bench_inv data;
|
||||||
|
int d = argc == 1; /* default */
|
||||||
int default_iters = 20000;
|
int default_iters = 20000;
|
||||||
int iters = get_iters(default_iters);
|
int iters = get_iters(default_iters);
|
||||||
int d = argc == 1; /* default */
|
if (iters == 0) {
|
||||||
|
help(default_iters);
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
if (argc > 1) {
|
if (argc > 1) {
|
||||||
if (have_flag(argc, argv, "-h")
|
if (have_flag(argc, argv, "-h")
|
||||||
|
|||||||
Reference in New Issue
Block a user