Reviewers: machenbach,
Message:
PTAL
Description:
Avoid fallback to weak entropy for the PRNGs on Windows.
Add fallback to rand_s() to gather entropy on Windows for
seeding the random number generator. This is compatible
with what Blink does.
BUG=v8:2905
Please review this at https://codereview.chromium.org/24315007/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files (+15, -0 lines):
M src/utils/random-number-generator.cc
M tools/gyp/v8.gyp
Index: src/utils/random-number-generator.cc
diff --git a/src/utils/random-number-generator.cc
b/src/utils/random-number-generator.cc
index
5e13e8fea8536aaca706c4b6f4c4cde845445f68..1bf201b26fd36ddbba8386ee878d607ebc35c093
100644
--- a/src/utils/random-number-generator.cc
+++ b/src/utils/random-number-generator.cc
@@ -28,6 +28,7 @@
#include "utils/random-number-generator.h"
#include <cstdio>
+#include <cstdlib>
#include "flags.h"
#include "platform/mutex.h"
@@ -67,6 +68,16 @@ RandomNumberGenerator::RandomNumberGenerator() {
}
}
+#if V8_OS_CYGIN || V8_OS_WIN
+ // Use rand_s() to gather entropy on Windows. See:
+ // https://code.google.com/p/v8/issues/detail?id=2905
+ unsigned first_half, second_half;
+ errno_t result = rand_s(&first_half);
+ ASSERT_EQ(0, result);
+ result = rand_s(&second_half);
+ ASSERT_EQ(0, result);
+ SetSeed((static_cast<int64_t>(first_half) << 32) + second_half);
+#else
// Gather entropy from /dev/urandom if available.
FILE* fp = fopen("/dev/urandom", "rb");
if (fp != NULL) {
@@ -91,6 +102,7 @@ RandomNumberGenerator::RandomNumberGenerator() {
seed ^= TimeTicks::HighResNow().ToInternalValue() << 16;
seed ^= TimeTicks::Now().ToInternalValue() << 8;
SetSeed(seed);
+#endif // V8_OS_CYGWIN || V8_OS_WIN
}
Index: tools/gyp/v8.gyp
diff --git a/tools/gyp/v8.gyp b/tools/gyp/v8.gyp
index
4f3d08fc6a9a4f14a9ea665f20c240e32545739e..1850c0e5f198477647e431e2ef9b790f578bb24c
100644
--- a/tools/gyp/v8.gyp
+++ b/tools/gyp/v8.gyp
@@ -805,6 +805,9 @@
]},
],
['OS=="win"', {
+ 'defines': [
+ '_CRT_RAND_S' # for rand_s()
+ ],
'variables': {
'gyp_generators': '<!(echo $GYP_GENERATORS)',
},
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.