Browse Source

Fix a BUG() warning from next_random_exponential_delay().

Fixes 20875; this code is as suggested by teor on the ticket.  Thanks!
Nick Mathewson 7 years ago
parent
commit
0815f96416
2 changed files with 8 additions and 2 deletions
  1. 4 0
      changes/bug20875
  2. 4 2
      src/or/directory.c

+ 4 - 0
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.
+

+ 4 - 2
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;