diff options
author | Nick Mathewson <nickm@torproject.org> | 2015-04-21 11:30:21 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2015-04-21 11:30:21 -0400 |
commit | 6bf31543dcda169aa1840fd7e0a0e0ff8a5f9640 (patch) | |
tree | 0675c9cf658c892ee1a611b57d55c8ca4b9b9e01 /src | |
parent | 3f413184728c1d7b441b8e54585c43220665218c (diff) | |
download | tor-6bf31543dcda169aa1840fd7e0a0e0ff8a5f9640.tar.gz tor-6bf31543dcda169aa1840fd7e0a0e0ff8a5f9640.zip |
Make the crypto_rand_int_range return value right-exclusive.
Diffstat (limited to 'src')
-rw-r--r-- | src/common/crypto.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/common/crypto.c b/src/common/crypto.c index 1c4eda90fd..24706ccb96 100644 --- a/src/common/crypto.c +++ b/src/common/crypto.c @@ -2317,23 +2317,23 @@ crypto_rand_int(unsigned int max) } } -/** Return a pseudorandom integer, chosen uniformly from the values between - * <b>min</b> and <b>max</b> inclusive. +/** Return a pseudorandom integer, chosen uniformly from the values <i>i</i> + * such that <b>min</b> <= <i>i</i> < <b>max</b>. * - * <b>min</b> MUST be between 0 and <b>max</b> - 1. - * <b>max</b> MUST be bigger than <b>min</b> and <= to INT_MAX. + * <b>min</b> MUST be in range [0, <b>max</b>). + * <b>max</b> MUST be in range (min, INT_MAX]. */ int crypto_rand_int_range(unsigned int min, unsigned int max) { - tor_assert(min <= max); + tor_assert(min < max); tor_assert(max <= INT_MAX); /* The overflow is avoided here because crypto_rand_int() returns a value * between 0 and (max - min - 1) with max being <= INT_MAX and min <= max. * This is why we add 1 to the maximum value so we can actually get max as * a return value. */ - return min + crypto_rand_int(max - min + 1); + return min + crypto_rand_int(max - min); } /** Return a pseudorandom 64-bit integer, chosen uniformly from the values @@ -2398,7 +2398,7 @@ crypto_random_hostname(int min_rand_len, int max_rand_len, const char *prefix, if (min_rand_len > max_rand_len) min_rand_len = max_rand_len; - randlen = crypto_rand_int_range(min_rand_len, max_rand_len); + randlen = crypto_rand_int_range(min_rand_len, max_rand_len+1); prefixlen = strlen(prefix); resultlen = prefixlen + strlen(suffix) + randlen + 16; |