X-Git-Url: https://git.openssl.org/?a=blobdiff_plain;f=engines%2Fe_ncipher.c;h=bf95ca8612e7324a45f0dea0a47c27e98fe6b0a7;hb=52c4c51f02c1bec0440f520aa98765072d1f0286;hp=44a522bc6780c0259957a58252063c7d73237c9d;hpb=ced621e3c2832fc3eb407c29f3f68362cfd3251c;p=openssl.git diff --git a/engines/e_ncipher.c b/engines/e_ncipher.c index 44a522bc67..bf95ca8612 100644 --- a/engines/e_ncipher.c +++ b/engines/e_ncipher.c @@ -185,6 +185,7 @@ static RSA_METHOD hwcrhk_rsa = 0, NULL, NULL, + NULL, NULL }; #endif @@ -200,6 +201,7 @@ static DH_METHOD hwcrhk_dh = NULL, NULL, 0, + NULL, NULL }; #endif @@ -559,15 +561,23 @@ static int hwcrhk_init(ENGINE *e) /* Check if the application decided to support dynamic locks, and if it does, use them. */ - if (disable_mutex_callbacks == 0 && - CRYPTO_get_dynlock_create_callback() != NULL && - CRYPTO_get_dynlock_lock_callback() != NULL && - CRYPTO_get_dynlock_destroy_callback() != NULL) + if (disable_mutex_callbacks == 0) { - hwcrhk_globals.mutex_init = hwcrhk_mutex_init; - hwcrhk_globals.mutex_acquire = hwcrhk_mutex_lock; - hwcrhk_globals.mutex_release = hwcrhk_mutex_unlock; - hwcrhk_globals.mutex_destroy = hwcrhk_mutex_destroy; + if (CRYPTO_get_dynlock_create_callback() != NULL && + CRYPTO_get_dynlock_lock_callback() != NULL && + CRYPTO_get_dynlock_destroy_callback() != NULL) + { + hwcrhk_globals.mutex_init = hwcrhk_mutex_init; + hwcrhk_globals.mutex_acquire = hwcrhk_mutex_lock; + hwcrhk_globals.mutex_release = hwcrhk_mutex_unlock; + hwcrhk_globals.mutex_destroy = hwcrhk_mutex_destroy; + } + else if (CRYPTO_get_locking_callback() != NULL) + { + HWCRHKerr(HWCRHK_F_HWCRHK_INIT,HWCRHK_R_LOCKING_MISSING); + ERR_add_error_data(1,"You HAVE to add dynamic locking callbacks via CRYPTO_set_dynlock_{create,lock,destroy}_callback()"); + goto err; + } } /* Try and get a context - if not, we may have a DSO but no