X-Git-Url: https://git.openssl.org/gitweb/?a=blobdiff_plain;f=crypto%2Finit.c;h=265d54d807290cd114bfe071e85f3ba97f169a76;hb=418bb7b31bb7cfca6e419a5aa7bf161784f61059;hp=8036654c111daff82938253ecf42ab55b8e86a9c;hpb=f7edeced4d8d3f650c5ee32f20ba7165da4e3067;p=openssl.git diff --git a/crypto/init.c b/crypto/init.c index 8036654c11..265d54d807 100644 --- a/crypto/init.c +++ b/crypto/init.c @@ -107,13 +107,15 @@ DEFINE_RUN_ONCE_STATIC(ossl_init_base) # else /* * Deliberately leak a reference to ourselves. This will force the library - * to remain loaded until the atexit() handler is run a process exit. + * to remain loaded until the atexit() handler is run at process exit. */ { DSO *dso = NULL; + ERR_set_mark(); dso = DSO_dsobyaddr(&base_inited, DSO_FLAG_NO_UNLOAD_ON_FREE); DSO_free(dso); + ERR_pop_to_mark(); } # endif #endif @@ -648,8 +650,10 @@ int OPENSSL_atexit(void (*handler)(void)) { DSO *dso = NULL; + ERR_set_mark(); dso = DSO_dsobyaddr(handlersym.sym, DSO_FLAG_NO_UNLOAD_ON_FREE); DSO_free(dso); + ERR_pop_to_mark(); } # endif }