From: Richard Levitte Date: Wed, 14 Jun 2000 16:57:57 +0000 (+0000) Subject: Geoff inspired me to nullify some pointers if initialisation went X-Git-Tag: OpenSSL-engine-0_9_6-beta1~58 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=9a4051050c6bf629b88728598f0cd12ea947bc89;p=oweals%2Fopenssl.git Geoff inspired me to nullify some pointers if initialisation went wrong. Additionally, just give a new value to hndidx once. --- diff --git a/crypto/engine/hw_ncipher.c b/crypto/engine/hw_ncipher.c index 46871c08bd..bd34989029 100644 --- a/crypto/engine/hw_ncipher.c +++ b/crypto/engine/hw_ncipher.c @@ -400,28 +400,42 @@ static int hwcrhk_init() goto err; } /* Everything's fine. */ - hndidx = RSA_get_ex_new_index(0, "nFast HWCryptoHook RSA key handle", - NULL, NULL, hwcrhk_ex_free); + if (hdnidx == -1) + hndidx = RSA_get_ex_new_index(0, + "nFast HWCryptoHook RSA key handle", + NULL, NULL, hwcrhk_ex_free); return 1; err: if(hwcrhk_dso) DSO_free(hwcrhk_dso); + hwcrhk_dso = NULL; + p_hwcrhk_Init = NULL; + p_hwcrhk_Finish = NULL; + p_hwcrhk_ModExp = NULL; + p_hwcrhk_RSA = NULL; + p_hwcrhk_RSAUnloadKey = NULL; + p_hwcrhk_ModExpCRT = NULL; + p_hwcrhk_RandomBytes = NULL; return 0; } static int hwcrhk_finish() { + int to_return = 1; if(hwcrhk_dso == NULL) { ENGINEerr(ENGINE_F_HWCRHK_FINISH,ENGINE_R_NOT_LOADED); - return 0; + to_return = 0; + goto err; } release_context(hwcrhk_context); if(!DSO_free(hwcrhk_dso)) { ENGINEerr(ENGINE_F_HWCRHK_FINISH,ENGINE_R_DSO_FAILURE); - return 0; + to_return = 0; + goto err; } + err: hwcrhk_dso = NULL; p_hwcrhk_Init = NULL; p_hwcrhk_Finish = NULL; @@ -430,7 +444,7 @@ static int hwcrhk_finish() p_hwcrhk_RSAUnloadKey = NULL; p_hwcrhk_ModExpCRT = NULL; p_hwcrhk_RandomBytes = NULL; - return 1; + return to_return; } /* A little mod_exp */