mirror of
https://github.com/Telecominfraproject/wlan-cloud-lib-poco.git
synced 2025-11-01 19:17:59 +00:00
fix(OpenSSLInitializer): fix provider unloading (#3567)
This commit is contained in:
@@ -24,6 +24,7 @@
|
||||
#include <openssl/crypto.h>
|
||||
#if OPENSSL_VERSION_NUMBER >= 0x30000000L
|
||||
#include <openssl/provider.h>
|
||||
#include <atomic>
|
||||
#endif
|
||||
#if defined(OPENSSL_FIPS) && OPENSSL_VERSION_NUMBER < 0x010001000L
|
||||
#include <openssl/fips.h>
|
||||
@@ -91,8 +92,8 @@ private:
|
||||
#endif
|
||||
|
||||
#if OPENSSL_VERSION_NUMBER >= 0x30000000L
|
||||
static OSSL_PROVIDER* _defaultProvider;
|
||||
static OSSL_PROVIDER* _legacyProvider;
|
||||
static std::atomic<OSSL_PROVIDER*> _defaultProvider;
|
||||
static std::atomic<OSSL_PROVIDER*> _legacyProvider;
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
@@ -66,8 +66,8 @@ Poco::FastMutex* OpenSSLInitializer::_mutexes(0);
|
||||
#endif
|
||||
|
||||
#if OPENSSL_VERSION_NUMBER >= 0x30000000L
|
||||
OSSL_PROVIDER* OpenSSLInitializer::_defaultProvider(0);
|
||||
OSSL_PROVIDER* OpenSSLInitializer::_legacyProvider(0);
|
||||
std::atomic<OSSL_PROVIDER*> OpenSSLInitializer::_defaultProvider(0);
|
||||
std::atomic<OSSL_PROVIDER*> OpenSSLInitializer::_legacyProvider(0);
|
||||
#endif
|
||||
|
||||
|
||||
@@ -159,13 +159,14 @@ void OpenSSLInitializer::uninitialize()
|
||||
#endif
|
||||
|
||||
#if OPENSSL_VERSION_NUMBER >= 0x30000000L
|
||||
if (_defaultProvider)
|
||||
OSSL_PROVIDER* provider = nullptr;
|
||||
if ((provider = _defaultProvider.exchange(nullptr)))
|
||||
{
|
||||
OSSL_PROVIDER_unload(_defaultProvider);
|
||||
OSSL_PROVIDER_unload(provider);
|
||||
}
|
||||
if (_legacyProvider)
|
||||
if ((provider = _legacyProvider.exchange(nullptr)))
|
||||
{
|
||||
OSSL_PROVIDER_unload(_legacyProvider);
|
||||
OSSL_PROVIDER_unload(provider);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user