From 9bfcf1e678c69ca5e2d734590e704346e6508468 Mon Sep 17 00:00:00 2001 From: Yann Ylavic Date: Mon, 20 Sep 2021 09:16:30 +0000 Subject: apr_crypto: non-DSO drivers should have global lifetime too. Same lifetime as the hashtable used by apr_crypto_get_driver() to cache the drivers for reloads. git-svn-id: https://svn.apache.org/repos/asf/apr/apr/trunk@1893466 13f79535-47bb-0310-9956-ffa450edef68 --- crypto/apr_crypto.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'crypto') diff --git a/crypto/apr_crypto.c b/crypto/apr_crypto.c index 478e3a4a7..7572a5904 100644 --- a/crypto/apr_crypto.c +++ b/crypto/apr_crypto.c @@ -215,8 +215,8 @@ APR_DECLARE(apr_status_t) apr_crypto_get_driver( char symname[34]; apr_dso_handle_t *dso; apr_dso_handle_sym_t symbol; - apr_pool_t *rootp; #endif + apr_pool_t *rootp; apr_status_t rv; if (result) { @@ -237,11 +237,11 @@ APR_DECLARE(apr_status_t) apr_crypto_get_driver( return APR_SUCCESS; } -#if APR_HAVE_MODULAR_DSO - /* The driver DSO must have exactly the same lifetime as the + /* The driver must have exactly the same lifetime as the * drivers hash table; ignore the passed-in pool */ rootp = apr_hash_pool_get(drivers); +#if APR_HAVE_MODULAR_DSO #if defined(NETWARE) apr_snprintf(modname, sizeof(modname), "crypto%s.nlm", name); #elif defined(WIN32) || defined(__CYGWIN__) @@ -283,6 +283,8 @@ APR_DECLARE(apr_status_t) apr_crypto_get_driver( #else /* not builtin and !APR_HAS_DSO => not implemented */ rv = APR_ENOTIMPL; + pool = rootp; /* global lifetime (aligned to hash table) */ + /* Load statically-linked drivers: */ #if APU_HAVE_OPENSSL if (!strcmp(name, "openssl")) { -- cgit v1.2.1