Skip to content

Commit

Permalink
Make 'openssl list' less sensitive for providers without params
Browse files Browse the repository at this point in the history
When a provider can't return parameters, make that a warning instead of an
error, and continue to list further providers.

Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
Reviewed-by: Todd Short <todd.short@me.com>
(Merged from #22866)

(cherry picked from commit 7ebaab7)
  • Loading branch information
levitte committed Dec 4, 2023
1 parent 7105094 commit 24fe507
Showing 1 changed file with 20 additions and 17 deletions.
37 changes: 20 additions & 17 deletions apps/list.c
Original file line number Diff line number Diff line change
Expand Up @@ -1238,6 +1238,9 @@ static void list_provider_info(void)
sk_OSSL_PROVIDER_sort(providers);
for (i = 0; i < sk_OSSL_PROVIDER_num(providers); i++) {
const OSSL_PROVIDER *prov = sk_OSSL_PROVIDER_value(providers, i);
const char *provname = OSSL_PROVIDER_get0_name(prov);

BIO_printf(bio_out, " %s\n", provname);

/* Query the "known" information parameters, the order matches below */
params[0] = OSSL_PARAM_construct_utf8_ptr(OSSL_PROV_PARAM_NAME,
Expand All @@ -1250,23 +1253,23 @@ static void list_provider_info(void)
params[4] = OSSL_PARAM_construct_end();
OSSL_PARAM_set_all_unmodified(params);
if (!OSSL_PROVIDER_get_params(prov, params)) {
BIO_printf(bio_err, "ERROR: Unable to query provider parameters\n");
return;
}

/* Print out the provider information, the params order matches above */
BIO_printf(bio_out, " %s\n", OSSL_PROVIDER_get0_name(prov));
if (OSSL_PARAM_modified(params))
BIO_printf(bio_out, " name: %s\n", name);
if (OSSL_PARAM_modified(params + 1))
BIO_printf(bio_out, " version: %s\n", version);
if (OSSL_PARAM_modified(params + 2))
BIO_printf(bio_out, " status: %sactive\n", status ? "" : "in");
if (verbose) {
if (OSSL_PARAM_modified(params + 3))
BIO_printf(bio_out, " build info: %s\n", buildinfo);
print_param_types("gettable provider parameters",
OSSL_PROVIDER_gettable_params(prov), 4);
BIO_printf(bio_err,
"WARNING: Unable to query provider parameters for %s\n",
provname);
} else {
/* Print out the provider information, the params order matches above */
if (OSSL_PARAM_modified(params))
BIO_printf(bio_out, " name: %s\n", name);
if (OSSL_PARAM_modified(params + 1))
BIO_printf(bio_out, " version: %s\n", version);
if (OSSL_PARAM_modified(params + 2))
BIO_printf(bio_out, " status: %sactive\n", status ? "" : "in");
if (verbose) {
if (OSSL_PARAM_modified(params + 3))
BIO_printf(bio_out, " build info: %s\n", buildinfo);
print_param_types("gettable provider parameters",
OSSL_PROVIDER_gettable_params(prov), 4);
}
}
}
sk_OSSL_PROVIDER_free(providers);
Expand Down

0 comments on commit 24fe507

Please sign in to comment.