diff --git a/wolfcrypt/src/ecc.c b/wolfcrypt/src/ecc.c index d75d3307f5..93245c9a0f 100644 --- a/wolfcrypt/src/ecc.c +++ b/wolfcrypt/src/ecc.c @@ -16858,7 +16858,12 @@ int wc_ecc_oid_cache_init(void) { int ret = 0; #if !defined(SINGLE_THREADED) && !defined(WOLFSSL_MUTEX_INITIALIZER) - ret = wc_InitMutex(&ecc_oid_cache_lock); + if (eccOidLockInit == 0) { + ret = wc_InitMutex(&ecc_oid_cache_lock); + if (ret == 0) { + eccOidLockInit = 1; + } + } #endif return ret; } @@ -16867,6 +16872,7 @@ void wc_ecc_oid_cache_free(void) { #if !defined(SINGLE_THREADED) && !defined(WOLFSSL_MUTEX_INITIALIZER) wc_FreeMutex(&ecc_oid_cache_lock); + eccOidLockInit = 0; #endif } #endif /* HAVE_OID_ENCODING */