]> git.sesse.net Git - vlc/commitdiff
vlc_rand_bytes: minor thread-safety fix
authorRémi Denis-Courmont <remi@remlab.net>
Sat, 6 Mar 2010 09:46:03 +0000 (11:46 +0200)
committerRémi Denis-Courmont <remi@remlab.net>
Sat, 6 Mar 2010 10:30:01 +0000 (12:30 +0200)
We need the lock to read okey and ikey

src/misc/rand.c

index 081ece3ff8234463d25c6efac66b3525beaaeddc..8932e407ad1343eb23d2dc04b7cefa323290f925 100644 (file)
@@ -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);