Handle negative inputs to crypto_random_time_range().

(These inputs are possible when Shadow starts the world at time_t 0,
and breaks our assumption that Tor didn't exist in the 1970s.)

Fixes regression introduced in 241e6b09. Fixes #16980.
This commit is contained in:
Nick Mathewson 2015-09-08 10:22:01 -04:00
parent 81e3deeb54
commit 280672bdbc
2 changed files with 8 additions and 1 deletions

6
changes/bug16980 Normal file
View File

@ -0,0 +1,6 @@
o Minor bugfixes:
- Fix the behavior of crypto_time_t when told to consider times
before 1970. (These times were possible when running in a
simulated network environment where time()'s output starts at
zero.) Fixes bug 16980; bugfix on 0.2.7.1-alpha.

View File

@ -2440,7 +2440,8 @@ crypto_rand_uint64_range(uint64_t min, uint64_t max)
time_t
crypto_rand_time_range(time_t min, time_t max)
{
return (time_t) crypto_rand_uint64_range(min, max);
tor_assert(min < max);
return min + (time_t)crypto_rand_uint64(max - min);
}
/** Return a pseudorandom 64-bit integer, chosen uniformly from the values