diff options
author | Pauli <ppzgs1@gmail.com> | 2021-02-18 09:16:26 +1000 |
---|---|---|
committer | Pauli <ppzgs1@gmail.com> | 2021-02-23 23:24:41 +1000 |
commit | 299f5ff3b5f2a5a9b5666e36a6a01fc430de9198 (patch) | |
tree | a522f985b02749c53b628f193c767de3c9fb93f6 /crypto/provider_core.c | |
parent | 332a245c04dff95f81cfa1f77e0f8a935794f5ee (diff) | |
download | openssl-new-299f5ff3b5f2a5a9b5666e36a6a01fc430de9198.tar.gz |
provider: add option to load a provider without disabling the fallbacks.
Add an argument to PROVIDER_try_load() that permits a provider to be
loaded without changing the fallback status. This is useful when an
additional provider needs to be loaded without perturbing any other setup.
E.g. adding mock providers as part of unit testing.
Reviewed-by: Tim Hudson <tjh@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/13652)
Diffstat (limited to 'crypto/provider_core.c')
-rw-r--r-- | crypto/provider_core.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/crypto/provider_core.c b/crypto/provider_core.c index 627ff384e1..da751e60ce 100644 --- a/crypto/provider_core.c +++ b/crypto/provider_core.c @@ -667,14 +667,16 @@ static int provider_activate(OSSL_PROVIDER *prov) return 0; } -int ossl_provider_activate(OSSL_PROVIDER *prov) +int ossl_provider_activate(OSSL_PROVIDER *prov, int retain_fallbacks) { if (prov == NULL) return 0; if (provider_activate(prov)) { - CRYPTO_THREAD_write_lock(prov->store->lock); - prov->store->use_fallbacks = 0; - CRYPTO_THREAD_unlock(prov->store->lock); + if (!retain_fallbacks) { + CRYPTO_THREAD_write_lock(prov->store->lock); + prov->store->use_fallbacks = 0; + CRYPTO_THREAD_unlock(prov->store->lock); + } return 1; } return 0; |