From fb6584987a43553b161b44fe9ede06651d4042f0 Mon Sep 17 00:00:00 2001 From: Tomas Mraz Date: Thu, 2 May 2024 17:31:22 +0200 Subject: [PATCH] OSSL_LIB_CTX_load_config() must not be called concurrently on same libctx The semantics of such concurrent call is not defined. Reviewed-by: Paul Dale Reviewed-by: Neil Horman (Merged from https://github.com/openssl/openssl/pull/24275) --- doc/man3/OSSL_LIB_CTX.pod | 3 ++- test/threadstest.c | 14 -------------- 2 files changed, 2 insertions(+), 15 deletions(-) diff --git a/doc/man3/OSSL_LIB_CTX.pod b/doc/man3/OSSL_LIB_CTX.pod index cf8bd8b067f1f..ad058041d8b4a 100644 --- a/doc/man3/OSSL_LIB_CTX.pod +++ b/doc/man3/OSSL_LIB_CTX.pod @@ -85,7 +85,8 @@ library context. OSSL_LIB_CTX_load_config() loads a configuration file using the given I. This can be used to associate a library context with providers that are loaded -from a configuration. +from a configuration. This function must not be called concurrently from +multiple threads on a single I. OSSL_LIB_CTX_free() frees the given I, unless it happens to be the default OpenSSL library context. diff --git a/test/threadstest.c b/test/threadstest.c index 9a961bb5c4cc3..2d05255132d3b 100644 --- a/test/threadstest.c +++ b/test/threadstest.c @@ -1076,19 +1076,6 @@ static int test_obj_add(void) 1, default_provider); } -static void test_lib_ctx_load_config_worker(void) -{ - if (!TEST_int_eq(OSSL_LIB_CTX_load_config(multi_libctx, config_file), 1)) - multi_set_success(0); -} - -static int test_lib_ctx_load_config(void) -{ - return thread_run_test(&test_lib_ctx_load_config_worker, - MAXIMUM_THREADS, &test_lib_ctx_load_config_worker, - 1, default_provider); -} - #if !defined(OPENSSL_NO_DGRAM) && !defined(OPENSSL_NO_SOCK) static BIO *multi_bio1, *multi_bio2; @@ -1275,7 +1262,6 @@ int setup_tests(void) #endif ADD_TEST(test_multi_load_unload_provider); ADD_TEST(test_obj_add); - ADD_TEST(test_lib_ctx_load_config); #if !defined(OPENSSL_NO_DGRAM) && !defined(OPENSSL_NO_SOCK) ADD_TEST(test_bio_dgram_pair); #endif