From: RĂ©mi Denis-Courmont Date: Sat, 6 Mar 2010 09:46:03 +0000 (+0200) Subject: vlc_rand_bytes: minor thread-safety fix X-Git-Tag: 1.1.0-pre1~480 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=26e7928801f206ae1aade88c161a6c3106a75f3f;p=vlc vlc_rand_bytes: minor thread-safety fix We need the lock to read okey and ikey --- diff --git a/src/misc/rand.c b/src/misc/rand.c index 081ece3ff8..8932e407ad 100644 --- a/src/misc/rand.c +++ b/src/misc/rand.c @@ -92,19 +92,21 @@ void vlc_rand_bytes (void *buf, size_t len) uint64_t val; struct md5_s mdi, mdo; + InitMD5 (&mdi); + InitMD5 (&mdo); + pthread_mutex_lock (&lock); if (counter == 0) vlc_rand_init (); val = counter++; - pthread_mutex_unlock (&lock); - InitMD5 (&mdi); AddMD5 (&mdi, ikey, sizeof (ikey)); + AddMD5 (&mdo, okey, sizeof (okey)); + pthread_mutex_unlock (&lock); + AddMD5 (&mdi, &stamp, sizeof (stamp)); AddMD5 (&mdi, &val, sizeof (val)); EndMD5 (&mdi); - InitMD5 (&mdo); - AddMD5 (&mdo, okey, sizeof (okey)); AddMD5 (&mdo, mdi.p_digest, sizeof (mdi.p_digest)); EndMD5 (&mdo);