From 7a6a0baa591e3d04831ed0f468c72dc45feba452 Mon Sep 17 00:00:00 2001 From: Matt Caswell Date: Mon, 20 Feb 2023 14:47:20 +0000 Subject: Only call OPENSSL_init_crypto on fetch if using the default libctx There is no point in calling OPENSSL_init_crypto() unless we are actually going to be using the default libctx. Fixes #20315 Reviewed-by: Dmitry Belyavskiy Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/20341) --- crypto/property/property.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'crypto') diff --git a/crypto/property/property.c b/crypto/property/property.c index 6f56d2366b..034cde51a8 100644 --- a/crypto/property/property.c +++ b/crypto/property/property.c @@ -502,13 +502,14 @@ int ossl_method_store_fetch(OSSL_METHOD_STORE *store, int ret = 0; int j, best = -1, score, optional; -#ifndef FIPS_MODULE - if (!OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CONFIG, NULL)) + if (nid <= 0 || method == NULL || store == NULL) return 0; -#endif - if (nid <= 0 || method == NULL || store == NULL) +#ifndef FIPS_MODULE + if (ossl_lib_ctx_is_default(store->ctx) + && !OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CONFIG, NULL)) return 0; +#endif /* This only needs to be a read lock, because the query won't create anything */ if (!ossl_property_read_lock(store)) -- cgit v1.2.3