Bug 1015547 - Fill |struct nsID| via arc4random_buf if available on Android and BSDs. r=vlad, r=glandium

This commit is contained in:
Jan Beich
2014-06-02 18:42:00 -04:00
parent a42f2cd2f1
commit fc3c76b613
2 changed files with 9 additions and 1 deletions

View File

@@ -16,6 +16,10 @@
#include "nsUUIDGenerator.h"
#ifdef ANDROID
extern "C" NS_EXPORT void arc4random_buf(void *, size_t);
#endif
using namespace mozilla;
NS_IMPL_ISUPPORTS(nsUUIDGenerator, nsIUUIDGenerator)
@@ -126,6 +130,9 @@ nsUUIDGenerator::GenerateUUIDInPlace(nsID* aId)
setstate(mState);
#endif
#ifdef HAVE_ARC4RANDOM_BUF
arc4random_buf(aId, sizeof(nsID));
#else /* HAVE_ARC4RANDOM_BUF */
size_t bytesLeft = sizeof(nsID);
while (bytesLeft > 0) {
#ifdef HAVE_ARC4RANDOM
@@ -150,6 +157,7 @@ nsUUIDGenerator::GenerateUUIDInPlace(nsID* aId)
bytesLeft -= toWrite;
}
#endif /* HAVE_ARC4RANDOM_BUF */
/* Put in the version */
aId->m2 &= 0x0fff;