ossl_decoder_cache_flush(): Do not raise an error if there is no cache
authorTomas Mraz <tomas@openssl.org>
Mon, 4 Dec 2023 17:01:28 +0000 (18:01 +0100)
committerTomas Mraz <tomas@openssl.org>
Wed, 6 Dec 2023 12:59:13 +0000 (13:59 +0100)
This function can be called during OPENSSL_cleanup() when
the cache was already flushed and deallocated.

Fixes #22939

Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22941)

crypto/encode_decode/decoder_pkey.c

index 24f61fbf1593a5505f80520d7e26e73a0cd2918c..eb1be1c98054314e708cae82aa1b144b5e80dffe 100644 (file)
@@ -721,10 +721,9 @@ int ossl_decoder_cache_flush(OSSL_LIB_CTX *libctx)
     DECODER_CACHE *cache
         = ossl_lib_ctx_get_data(libctx, OSSL_LIB_CTX_DECODER_CACHE_INDEX);
 
-    if (cache == NULL) {
-        ERR_raise(ERR_LIB_OSSL_DECODER, ERR_R_OSSL_DECODER_LIB);
+    if (cache == NULL)
         return 0;
-    }
+
 
     if (!CRYPTO_THREAD_write_lock(cache->lock)) {
         ERR_raise(ERR_LIB_OSSL_DECODER, ERR_R_OSSL_DECODER_LIB);