From 0815f96416676ace7cfdb5c29000d8cd6ee3459f Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Wed, 7 Dec 2016 11:13:11 -0500 Subject: [PATCH] Fix a BUG() warning from next_random_exponential_delay(). Fixes 20875; this code is as suggested by teor on the ticket. Thanks! --- changes/bug20875 | 4 ++++ src/or/directory.c | 6 ++++-- 2 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 changes/bug20875 diff --git a/changes/bug20875 b/changes/bug20875 new file mode 100644 index 000000000..6bba2cbc1 --- /dev/null +++ b/changes/bug20875 @@ -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. + diff --git a/src/or/directory.c b/src/or/directory.c index f4fd52192..fce48c6e9 100644 --- a/src/or/directory.c +++ b/src/or/directory.c @@ -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;