summaryrefslogtreecommitdiffstats
path: root/include/crypto
diff options
context:
space:
mode:
authorMatt Caswell <matt@openssl.org>2021-05-20 11:52:56 +0100
committerPauli <pauli@openssl.org>2021-05-24 09:39:15 +1000
commitc9732f095363251131e6e6a4cbbe45deea285ed0 (patch)
treef79bc658c3ef64ec292e41bb9d0f87a5edf27ac4 /include/crypto
parentb3135f56a663711a1234e3d419aaae5fe6915f7f (diff)
Fix a memleak in the FIPS provider
If the DRBG is used within the scope of the FIPS OSSL_provider_init function then it attempts to register a thread callback via c_thread_start. However the implementation of c_thread_start assumed that the provider's provctx was already present. However because OSSL_provider_init is still running it was actually NULL. This means the thread callback fail to work correctly and a memory leak resulted. Instead of having c_thread_start use the provctx as the callback argument we change the definition of c_thread_start to have an explicit callback argument to use. Reviewed-by: Paul Dale <pauli@openssl.org> (Merged from https://github.com/openssl/openssl/pull/15278)
Diffstat (limited to 'include/crypto')
-rw-r--r--include/crypto/cryptlib.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/include/crypto/cryptlib.h b/include/crypto/cryptlib.h
index 1e58663b4f..39a956bfd3 100644
--- a/include/crypto/cryptlib.h
+++ b/include/crypto/cryptlib.h
@@ -21,7 +21,7 @@ int ossl_init_thread_start(const void *index, void *arg,
int ossl_init_thread_deregister(void *index);
int ossl_init_thread(void);
void ossl_cleanup_thread(void);
-void ossl_ctx_thread_stop(void *arg);
+void ossl_ctx_thread_stop(OSSL_LIB_CTX *ctx);
/*
* OPENSSL_INIT flags. The primary list of these is in crypto.h. Flags below