From: Pauli Date: Thu, 8 Jul 2021 01:22:14 +0000 (+1000) Subject: apps: add query to allow a command to know of a provider command line option was... X-Git-Tag: openssl-3.0.0-beta2~79 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=242dfd8a1b93326d200383948a8d57db5ce57de0;p=thirdparty%2Fopenssl.git apps: add query to allow a command to know of a provider command line option was processed Better fixing: Fixing #15683 Fixing #15686 Replacing rather than fixing: Fixing #15414 Since that claims to fix another: Fixing #15372 Reviewed-by: Tomas Mraz (Merged from https://github.com/openssl/openssl/pull/16022) --- diff --git a/apps/include/opt.h b/apps/include/opt.h index ce0e35cd722..4f83a0ed53c 100644 --- a/apps/include/opt.h +++ b/apps/include/opt.h @@ -388,8 +388,13 @@ int opt_pair(const char *arg, const OPT_PAIR * pairs, int *result); int opt_verify(int i, X509_VERIFY_PARAM *vpm); int opt_rand(int i); int opt_provider(int i); +int opt_provider_option_given(void); char **opt_rest(void); int opt_num_rest(void); +/* Returns non-zero if legacy paths are still available */ +int opt_legacy_okay(void); + + #endif /* OSSL_APPS_OPT_H */ diff --git a/apps/lib/app_provider.c b/apps/lib/app_provider.c index c3100b2fa88..63f78ae07d8 100644 --- a/apps/lib/app_provider.c +++ b/apps/lib/app_provider.c @@ -13,6 +13,9 @@ #include #include +/* Non-zero if any of the provider options have been seen */ +static int provider_option_given = 0; + DEFINE_STACK_OF(OSSL_PROVIDER) /* @@ -64,6 +67,9 @@ static int opt_provider_path(const char *path) int opt_provider(int opt) { + const int given = provider_option_given; + + provider_option_given = 1; switch ((enum prov_range)opt) { case OPT_PROV__FIRST: case OPT_PROV__LAST: @@ -75,5 +81,12 @@ int opt_provider(int opt) case OPT_PROV_PROPQUERY: return app_set_propq(opt_arg()); } + /* Should never get here but if we do, undo what we did earlier */ + provider_option_given = given; return 0; } + +int opt_provider_option_given(void) +{ + return provider_option_given; +}