|
@@ -237,12 +237,12 @@ void OPENSSL_thread_stop(void)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-void ossl_ctx_thread_stop(void *arg)
|
|
|
+void ossl_ctx_thread_stop(OSSL_LIB_CTX *ctx)
|
|
|
{
|
|
|
if (destructor_key.sane != -1) {
|
|
|
THREAD_EVENT_HANDLER **hands
|
|
|
= init_get_thread_local(&destructor_key.value, 0, 1);
|
|
|
- init_thread_stop(arg, hands);
|
|
|
+ init_thread_stop(ctx, hands);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -285,10 +285,14 @@ static const OSSL_LIB_CTX_METHOD thread_event_ossl_ctx_method = {
|
|
|
thread_event_ossl_ctx_free,
|
|
|
};
|
|
|
|
|
|
-void ossl_ctx_thread_stop(void *arg)
|
|
|
+static void ossl_arg_thread_stop(void *arg)
|
|
|
+{
|
|
|
+ ossl_ctx_thread_stop((OSSL_LIB_CTX *)arg);
|
|
|
+}
|
|
|
+
|
|
|
+void ossl_ctx_thread_stop(OSSL_LIB_CTX *ctx)
|
|
|
{
|
|
|
THREAD_EVENT_HANDLER **hands;
|
|
|
- OSSL_LIB_CTX *ctx = PROV_LIBCTX_OF(arg);
|
|
|
CRYPTO_THREAD_LOCAL *local
|
|
|
= ossl_lib_ctx_get_data(ctx, OSSL_LIB_CTX_THREAD_EVENT_HANDLER_INDEX,
|
|
|
&thread_event_ossl_ctx_method);
|
|
@@ -367,7 +371,8 @@ int ossl_init_thread_start(const void *index, void *arg,
|
|
|
* libcrypto to tell us about later thread stop events. c_thread_start
|
|
|
* is a callback to libcrypto defined in fipsprov.c
|
|
|
*/
|
|
|
- if (!c_thread_start(FIPS_get_core_handle(ctx), ossl_ctx_thread_stop))
|
|
|
+ if (!c_thread_start(FIPS_get_core_handle(ctx), ossl_arg_thread_stop,
|
|
|
+ ctx))
|
|
|
return 0;
|
|
|
}
|
|
|
#endif
|