Skip to content

Commit f4d2b37

Browse files
committed
Merge pull request #337 from libtom/fix/prng_pthread
prevent undefined behavior with LTC_PTHREAD (cherry picked from commit 45db2a9)
1 parent dd86860 commit f4d2b37

6 files changed

Lines changed: 7 additions & 0 deletions

File tree

src/headers/tomcrypt_custom.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -549,6 +549,7 @@
549549
#define LTC_MUTEX_INIT(x) LTC_ARGCHK(pthread_mutex_init(x, NULL) == 0);
550550
#define LTC_MUTEX_LOCK(x) LTC_ARGCHK(pthread_mutex_lock(x) == 0);
551551
#define LTC_MUTEX_UNLOCK(x) LTC_ARGCHK(pthread_mutex_unlock(x) == 0);
552+
#define LTC_MUTEX_DESTROY(x) LTC_ARGCHK(pthread_mutex_destroy(x) == 0);
552553

553554
#else
554555

@@ -559,6 +560,7 @@
559560
#define LTC_MUTEX_INIT(x)
560561
#define LTC_MUTEX_LOCK(x)
561562
#define LTC_MUTEX_UNLOCK(x)
563+
#define LTC_MUTEX_DESTROY(x)
562564

563565
#endif
564566

src/prngs/chacha20.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@ int chacha20_prng_done(prng_state *prng)
139139
prng->ready = 0;
140140
err = chacha_done(&prng->chacha.s);
141141
LTC_MUTEX_UNLOCK(&prng->lock);
142+
LTC_MUTEX_DESTROY(&prng->lock);
142143
return err;
143144
}
144145

src/prngs/fortuna.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,7 @@ int fortuna_done(prng_state *prng)
318318
zeromem(tmp, sizeof(tmp));
319319
#endif
320320
LTC_MUTEX_UNLOCK(&prng->lock);
321+
LTC_MUTEX_DESTROY(&prng->lock);
321322
return err;
322323
}
323324

src/prngs/rc4.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ int rc4_done(prng_state *prng)
142142
prng->ready = 0;
143143
err = rc4_stream_done(&prng->rc4.s);
144144
LTC_MUTEX_UNLOCK(&prng->lock);
145+
LTC_MUTEX_DESTROY(&prng->lock);
145146
return err;
146147
}
147148

src/prngs/sober128.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,7 @@ int sober128_done(prng_state *prng)
141141
prng->ready = 0;
142142
err = sober128_stream_done(&prng->sober128.s);
143143
LTC_MUTEX_UNLOCK(&prng->lock);
144+
LTC_MUTEX_DESTROY(&prng->lock);
144145
return err;
145146
}
146147

src/prngs/yarrow.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,7 @@ int yarrow_done(prng_state *prng)
262262
err = ctr_done(&prng->yarrow.ctr);
263263

264264
LTC_MUTEX_UNLOCK(&prng->lock);
265+
LTC_MUTEX_DESTROY(&prng->lock);
265266
return err;
266267
}
267268

0 commit comments

Comments
 (0)