Browse Source

r11864@Kushana: nickm | 2007-01-06 01:25:59 -0500
Fix an XXXX012 in connection.c: prevent overflows on unfeasibly-high-bandwidth servers on 32-bit architectures.


svn:r9282

Nick Mathewson 17 years ago
parent
commit
d6073cc7fa
2 changed files with 6 additions and 3 deletions
  1. 3 0
      ChangeLog
  2. 3 3
      src/or/connection.c

+ 3 - 0
ChangeLog

@@ -27,6 +27,9 @@ Changes in version 0.1.2.6-alpha - 2007-??-??
   o Minor bugfixes:
     - Restore a warning message if we accidentally resolve an address that
       we weren't planning to resolve.
+    - Prevent an (unlikely) bug on 32-bit architectures that could make
+      directories send 503s incorrectly when BandwidthBurst plus 2 times
+      BandwidthRate was over to 2 GB.
 
 
 Changes in version 0.1.2.5-alpha - 2007-01-06

+ 3 - 3
src/or/connection.c

@@ -1183,9 +1183,9 @@ global_write_bucket_low(size_t attempt, int priority)
 
   if (priority == 1) { /* old-style v1 query */
     /* Could we handle *two* of these requests within the next two seconds? */
-    /* XXX012 make this robust against overflows */
-    if (global_write_bucket + 2*(int)(get_options()->BandwidthRate) <
-        2*(int)attempt)
+    int64_t can_write = (int64_t)global_write_bucket
+      + 2*get_options()->BandwidthRate;
+    if (can_write < 2*(int64_t)attempt)
       return 1;
   } else { /* v2 query */
     /* no further constraints yet */