Workaround crash in atexit on NonStop platforms
authorTomas Mraz <tomas@openssl.org>
Tue, 6 Dec 2022 09:52:47 +0000 (10:52 +0100)
committerPauli <pauli@openssl.org>
Tue, 31 Jan 2023 00:04:24 +0000 (11:04 +1100)
We cannot dynamically load the legacy provider into an application
that is linked statically to libcrypto as this causes
a double loading of libcrypto (one static and one dynamic) and
on NonStop this leads to a segfault in atexit().

Fixes #17537

Reviewed-by: Hugo Landau <hlandau@openssl.org>
Reviewed-by: Tim Hudson <tjh@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/19844)

test/evp_extra_test.c

index 7f82a0cdf2bf3ef6de3f844bcd153a856ab83713..9230e7b99500053eade9b9080e84d8982928877a 100644 (file)
@@ -4731,7 +4731,9 @@ int setup_tests(void)
             /* Swap the libctx to test non-default context only */
             nullprov = OSSL_PROVIDER_load(NULL, "null");
             deflprov = OSSL_PROVIDER_load(testctx, "default");
+#ifndef OPENSSL_SYS_TANDEM
             lgcyprov = OSSL_PROVIDER_load(testctx, "legacy");
+#endif
             break;
         case OPT_TEST_CASES:
             break;
@@ -4863,6 +4865,8 @@ void cleanup_tests(void)
 {
     OSSL_PROVIDER_unload(nullprov);
     OSSL_PROVIDER_unload(deflprov);
+#ifndef OPENSSL_SYS_TANDEM
     OSSL_PROVIDER_unload(lgcyprov);
+#endif
     OSSL_LIB_CTX_free(testctx);
 }