Bug 1015547 - Prefer arc4random to generate UUIDs on BSDs. r=vlad, r=glandium

This commit is contained in:
Jan Beich
2014-05-28 21:43:00 -04:00
parent 0197f8b3b7
commit 8d5c295f45
3 changed files with 7 additions and 7 deletions

View File

@@ -35,7 +35,7 @@ nsUUIDGenerator::Init()
// We're a service, so we're guaranteed that Init() is not going
// to be reentered while we're inside Init().
#if !defined(XP_WIN) && !defined(XP_MACOSX) && !defined(ANDROID)
#if !defined(XP_WIN) && !defined(XP_MACOSX) && !defined(HAVE_ARC4RANDOM)
/* initialize random number generator using NSPR random noise */
unsigned int seed;
@@ -72,7 +72,7 @@ nsUUIDGenerator::Init()
}
#endif
#endif /* non XP_WIN and non XP_MACOSX */
#endif /* non XP_WIN and non XP_MACOSX and non ARC4RANDOM */
return NS_OK;
}
@@ -122,13 +122,13 @@ nsUUIDGenerator::GenerateUUIDInPlace(nsID* aId)
* back to it; instead, we use the value returned when we called
* initstate, since older glibc's have broken setstate() return values
*/
#ifndef ANDROID
#ifndef HAVE_ARC4RANDOM
setstate(mState);
#endif
size_t bytesLeft = sizeof(nsID);
while (bytesLeft > 0) {
#ifdef ANDROID
#ifdef HAVE_ARC4RANDOM
long rval = arc4random();
const size_t mRBytes = 4;
#else
@@ -159,7 +159,7 @@ nsUUIDGenerator::GenerateUUIDInPlace(nsID* aId)
aId->m3[0] &= 0x3f;
aId->m3[0] |= 0x80;
#ifndef ANDROID
#ifndef HAVE_ARC4RANDOM
/* Restore the previous RNG state */
setstate(mSavedState);
#endif