summaryrefslogtreecommitdiffstats
path: root/chrome/common
diff options
context:
space:
mode:
authordeanm@google.com <deanm@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2008-08-29 08:58:27 +0000
committerdeanm@google.com <deanm@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2008-08-29 08:58:27 +0000
commit3ec0907d83baa36b48cfc237c6a27cfa4a468c00 (patch)
tree0c039f5f32f100c06ea7d0505659d93032a04cbb /chrome/common
parent8a2cebb5dc1393c74c1921852369cc45e291914e (diff)
downloadchromium_src-3ec0907d83baa36b48cfc237c6a27cfa4a468c00.zip
chromium_src-3ec0907d83baa36b48cfc237c6a27cfa4a468c00.tar.gz
chromium_src-3ec0907d83baa36b48cfc237c6a27cfa4a468c00.tar.bz2
We don't need to support win2k, so we can always use rand_s. We can also use this for the non-secure case, which simplifies things since we shouldn't need to worry about threading anymore.
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1520 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/common')
-rw-r--r--chrome/common/rand_util.cc27
1 files changed, 2 insertions, 25 deletions
diff --git a/chrome/common/rand_util.cc b/chrome/common/rand_util.cc
index c4ec6fd..52492a0 100644
--- a/chrome/common/rand_util.cc
+++ b/chrome/common/rand_util.cc
@@ -5,40 +5,18 @@
#include "chrome/common/rand_util.h"
#include <stdlib.h>
-#include <time.h>
#include "base/logging.h"
-#include "base/thread_local_storage.h"
-#include "base/time.h"
-#include "base/win_util.h"
namespace rand_util {
-// TODO(evanm): don't rely on static initialization.
-// Using TLS since srand() needs to be called once in each thread.
-TLSSlot g_tls_index;
-
int RandInt(int min, int max) {
- if (g_tls_index.Get() == 0) {
- g_tls_index.Set(reinterpret_cast<void*>(1));
- TimeDelta now = TimeTicks::UnreliableHighResNow() - TimeTicks();
- unsigned int seed = static_cast<unsigned int>(now.InMicroseconds());
- srand(seed);
- }
-
- // From the rand man page, use this instead of just rand() % max, so that the
- // higher bits are used.
- return min + static_cast<int>(static_cast<double>(max - min + 1) *
- (::rand() / (RAND_MAX + 1.0)));
+ return RandIntSecure(min, max);
}
int RandIntSecure(int min, int max) {
- if (win_util::GetWinVersion() < win_util::WINVERSION_XP) {
- // rand_s needs XP and later.
- return RandInt(min, max);
- }
-
unsigned int number;
+ // This code will not work on win2k, which we do not support.
errno_t rv = rand_s(&number);
DCHECK(rv == 0) << "rand_s failed with error " << rv;
@@ -49,4 +27,3 @@ int RandIntSecure(int min, int max) {
}
} // namespace rand_util
-