diff --git a/src/headers/tomcrypt_custom.h b/src/headers/tomcrypt_custom.h index e9ee7ec..80b9957 100644 --- a/src/headers/tomcrypt_custom.h +++ b/src/headers/tomcrypt_custom.h @@ -549,6 +549,7 @@ #define LTC_MUTEX_INIT(x) LTC_ARGCHK(pthread_mutex_init(x, NULL) == 0); #define LTC_MUTEX_LOCK(x) LTC_ARGCHK(pthread_mutex_lock(x) == 0); #define LTC_MUTEX_UNLOCK(x) LTC_ARGCHK(pthread_mutex_unlock(x) == 0); +#define LTC_MUTEX_DESTROY(x) LTC_ARGCHK(pthread_mutex_destroy(x) == 0); #else @@ -559,6 +560,7 @@ #define LTC_MUTEX_INIT(x) #define LTC_MUTEX_LOCK(x) #define LTC_MUTEX_UNLOCK(x) +#define LTC_MUTEX_DESTROY(x) #endif diff --git a/src/prngs/chacha20.c b/src/prngs/chacha20.c index ac1f8a2..72a6d63 100644 --- a/src/prngs/chacha20.c +++ b/src/prngs/chacha20.c @@ -139,6 +139,7 @@ int chacha20_prng_done(prng_state *prng) prng->ready = 0; err = chacha_done(&prng->chacha.s); LTC_MUTEX_UNLOCK(&prng->lock); + LTC_MUTEX_DESTROY(&prng->lock); return err; } diff --git a/src/prngs/fortuna.c b/src/prngs/fortuna.c index 4a520d4..7b1ecb6 100644 --- a/src/prngs/fortuna.c +++ b/src/prngs/fortuna.c @@ -318,6 +318,7 @@ LBL_UNLOCK: zeromem(tmp, sizeof(tmp)); #endif LTC_MUTEX_UNLOCK(&prng->lock); + LTC_MUTEX_DESTROY(&prng->lock); return err; } diff --git a/src/prngs/rc4.c b/src/prngs/rc4.c index 5ae91c4..e2aa921 100644 --- a/src/prngs/rc4.c +++ b/src/prngs/rc4.c @@ -142,6 +142,7 @@ int rc4_done(prng_state *prng) prng->ready = 0; err = rc4_stream_done(&prng->rc4.s); LTC_MUTEX_UNLOCK(&prng->lock); + LTC_MUTEX_DESTROY(&prng->lock); return err; } diff --git a/src/prngs/sober128.c b/src/prngs/sober128.c index 00b1d61..8d95491 100644 --- a/src/prngs/sober128.c +++ b/src/prngs/sober128.c @@ -141,6 +141,7 @@ int sober128_done(prng_state *prng) prng->ready = 0; err = sober128_stream_done(&prng->sober128.s); LTC_MUTEX_UNLOCK(&prng->lock); + LTC_MUTEX_DESTROY(&prng->lock); return err; } diff --git a/src/prngs/yarrow.c b/src/prngs/yarrow.c index 1a77e7f..e598834 100644 --- a/src/prngs/yarrow.c +++ b/src/prngs/yarrow.c @@ -262,6 +262,7 @@ int yarrow_done(prng_state *prng) err = ctr_done(&prng->yarrow.ctr); LTC_MUTEX_UNLOCK(&prng->lock); + LTC_MUTEX_DESTROY(&prng->lock); return err; }