Skip to content

Commit

Permalink
This should fix a lock-order-inversion
Browse files Browse the repository at this point in the history
Calling OPENSSL_init_crypto before acquiring the
ossl_property_read_lock in ossl_method_store_fetch
makes the second call to OPENSSL_init_crypto
from ossl_ctx_global_properties unnecessary.

Fixes #12869
  • Loading branch information
bernd-edlinger committed Nov 5, 2020
1 parent 9750b4d commit c5185ae
Showing 1 changed file with 3 additions and 2 deletions.
5 changes: 3 additions & 2 deletions crypto/property/property.c
Expand Up @@ -338,7 +338,8 @@ int ossl_method_store_fetch(OSSL_METHOD_STORE *store, int nid,
int j, best = -1, score, optional;

#ifndef FIPS_MODULE
OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CONFIG, NULL);
if (!OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CONFIG, NULL))
return 0;
#endif

if (nid <= 0 || method == NULL || store == NULL)
Expand All @@ -357,7 +358,7 @@ int ossl_method_store_fetch(OSSL_METHOD_STORE *store, int nid,

if (prop_query != NULL)
p2 = pq = ossl_parse_query(store->ctx, prop_query);
plp = ossl_ctx_global_properties(store->ctx, 1);
plp = ossl_ctx_global_properties(store->ctx, 0);
if (plp != NULL && *plp != NULL) {
if (pq == NULL) {
pq = *plp;
Expand Down

0 comments on commit c5185ae

Please sign in to comment.