Fix a BUG() warning from next_random_exponential_delay().

Fixes 20875; this code is as suggested by teor on the ticket.  Thanks!
This commit is contained in:
Nick Mathewson 2016-12-07 11:13:11 -05:00
parent fce425e3ff
commit 0815f96416
2 changed files with 8 additions and 2 deletions

4
changes/bug20875 Normal file
View File

@ -0,0 +1,4 @@
o Minor bugfixes (download scheduling)
- Resolve a "bug" warning when considering a download schedule whose
delay had approached INT_MAX. Fixes 20875; bugfix on 0.2.9.5-alpha.

View File

@ -3787,10 +3787,12 @@ STATIC int
next_random_exponential_delay(int delay, int max_delay)
{
/* Check preconditions */
if (BUG(max_delay < 0))
max_delay = 0;
if (BUG(delay > max_delay))
delay = max_delay;
if (BUG(delay == INT_MAX))
delay -= 1; /* prevent overflow */
if (delay == INT_MAX)
return INT_MAX; /* prevent overflow */
if (BUG(delay < 0))
delay = 0;