diff options
author | Alex Converse <aconverse@google.com> | 2017-04-11 17:20:18 (GMT) |
---|---|---|
committer | Alex Converse <aconverse@google.com> | 2017-08-03 21:12:25 (GMT) |
commit | deb99a9d268b7846cace92386414cd799002f855 (patch) | |
tree | 7c060315ef357144e5bfa34327069a3c4515cd3c /googletest | |
parent | 50f3bafb1aefcdd0704b045bcbf58b2a81720256 (diff) | |
download | googletest-deb99a9d268b7846cace92386414cd799002f855.zip googletest-deb99a9d268b7846cace92386414cd799002f855.tar.gz googletest-deb99a9d268b7846cace92386414cd799002f855.tar.bz2 |
Use wider types to prevent unsigned overflow diagnosticsrefs/pull/1180/head
The rest of the (covered) codebase is already integer overflow clean.
This is a cherry-pick of an internal change.
TESTED=gtest_shuffle_test goes from fail to pass with -fsanitize=integer
Diffstat (limited to 'googletest')
-rw-r--r-- | googletest/src/gtest.cc | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/googletest/src/gtest.cc b/googletest/src/gtest.cc index 4aed0e1..6cac93d 100644 --- a/googletest/src/gtest.cc +++ b/googletest/src/gtest.cc @@ -310,7 +310,8 @@ namespace internal { // than kMaxRange. UInt32 Random::Generate(UInt32 range) { // These constants are the same as are used in glibc's rand(3). - state_ = (1103515245U*state_ + 12345U) % kMaxRange; + // Use wider types than necessary to prevent unsigned overflow diagnostics. + state_ = static_cast<UInt32>(1103515245ULL*state_ + 12345U) % kMaxRange; GTEST_CHECK_(range > 0) << "Cannot generate a number in the range [0, 0)."; |