]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Cleaner fix for get_effective_bw(rate|burst), with comment on why it is ok.
authorNick Mathewson <nickm@torproject.org>
Thu, 30 Jul 2009 14:14:12 +0000 (10:14 -0400)
committerNick Mathewson <nickm@torproject.org>
Thu, 30 Jul 2009 14:14:12 +0000 (10:14 -0400)
src/or/config.c

index fa986a6fc269bc2e42419565b1133abe47a35c31..603f1b606debb0a717296db9adefb21784135852 100644 (file)
@@ -1227,12 +1227,14 @@ options_need_geoip_info(or_options_t *options, const char **reason_out)
 uint32_t
 get_effective_bwrate(or_options_t *options)
 {
-  uint32_t bw = (int)options->BandwidthRate;
+  uint64_t bw = options->BandwidthRate;
   if (bw > options->MaxAdvertisedBandwidth)
-    bw = (int)options->MaxAdvertisedBandwidth;
+    bw = options->MaxAdvertisedBandwidth;
   if (options->RelayBandwidthRate > 0 && bw > options->RelayBandwidthRate)
-    bw = (int)options->RelayBandwidthRate;
-  return bw;
+    bw = options->RelayBandwidthRate;
+
+  /* ensure_bandwidth_cap() makes sure that this cast can't overflow. */
+  return (uint32_t)bw;
 }
 
 /** Return the bandwidthburst that we are going to report to the authorities
@@ -1240,10 +1242,11 @@ get_effective_bwrate(or_options_t *options)
 uint32_t
 get_effective_bwburst(or_options_t *options)
 {
-  uint32_t bw = (int)options->BandwidthBurst;
+  uint64_t bw = options->BandwidthBurst;
   if (options->RelayBandwidthBurst > 0 && bw > options->RelayBandwidthBurst)
-    bw = (int)options->RelayBandwidthBurst;
-  return bw;
+    bw = options->RelayBandwidthBurst;
+  /* ensure_bandwidth_cap() makes sure that this cast can't overflow. */
+  return (uint32_t)bw;
 }
 
 /** Fetch the active option list, and take actions based on it. All of the