Browse Source

Merge remote-tracking branch 'origin/maint-0.2.2'

Conflicts:
	configure.in
	src/or/circuitbuild.c
Nick Mathewson 12 years ago
parent
commit
a41f1fc612

+ 4 - 0
changes/bug3894

@@ -0,0 +1,4 @@
+  o Build fixes:
+    - Clean up some code issues that prevented Tor from building on older
+      BSDs.  Fixes bug 3894; reported by grarpamp.
+      

+ 13 - 0
changes/replay-firstpart

@@ -0,0 +1,13 @@
+  o Minor features (security):
+
+    - Check for replays of the public-key encrypted portion of an
+      INTRODUCE1 cell, in addition to the current check for replays of
+      the g^x value.  This prevents a possible class of active attacks
+      by an attacker who controls both an introduction point and a
+      rendezvous point, and who uses the malleability of AES-CTR to
+      alter the encrypted g^x portion of the INTRODUCE1 cell.  We
+      think that these attacks is infeasible (requiring the attacker
+      to send on the order of zettabytes of altered cells in a short
+      interval), but we'd rather block them off in case there are any
+      classes of this attack that we missed.  Reported by dvorak.
+

+ 2 - 0
configure.in

@@ -296,8 +296,10 @@ AC_CHECK_FUNCS(
         gmtime_r \
         inet_aton \
         localtime_r \
+	lround \
         memmem \
         prctl \
+	rint \
         socketpair \
         strlcat \
         strlcpy \

+ 2 - 1
src/common/torgzip.c

@@ -14,11 +14,12 @@
 #include <stdio.h>
 #include <assert.h>
 #include <string.h>
+#include "torint.h"
+
 #ifdef HAVE_NETINET_IN_H
 #include <netinet/in.h>
 #endif
 
-#include "torint.h"
 #include "util.h"
 #include "torlog.h"
 #include "torgzip.h"

+ 5 - 3
src/common/util.c

@@ -338,10 +338,12 @@ tor_mathlog(double d)
 long
 tor_lround(double d)
 {
-#ifdef _MSC_VER
-  return (long)(d > 0 ? d + 0.5 : ceil(d - 0.5));
-#else
+#if defined(HAVE_LROUND)
   return lround(d);
+#elif defined(HAVE_RINT)
+  return (long)rint(d);
+#else
+  return (long)(d > 0 ? d + 0.5 : ceil(d - 0.5));
 #endif
 }
 

+ 6 - 6
src/or/circuitbuild.c

@@ -1264,7 +1264,7 @@ circuit_build_times_network_check_changed(circuit_build_times_t *cbt)
   if (cbt->timeout_ms >= circuit_build_times_get_initial_timeout()) {
     if (cbt->timeout_ms > INT32_MAX/2 || cbt->close_ms > INT32_MAX/2) {
       log_warn(LD_CIRC, "Insanely large circuit build timeout value. "
-              "(timeout = %lfmsec, close = %lfmsec)",
+              "(timeout = %fmsec, close = %fmsec)",
                cbt->timeout_ms, cbt->close_ms);
     } else {
       cbt->timeout_ms *= 2;
@@ -1441,7 +1441,7 @@ circuit_build_times_set_timeout(circuit_build_times_t *cbt)
     return;
 
   if (cbt->timeout_ms < circuit_build_times_min_timeout()) {
-    log_warn(LD_CIRC, "Set buildtimeout to low value %lfms. Setting to %dms",
+    log_warn(LD_CIRC, "Set buildtimeout to low value %fms. Setting to %dms",
              cbt->timeout_ms, circuit_build_times_min_timeout());
     cbt->timeout_ms = circuit_build_times_min_timeout();
     if (cbt->close_ms < cbt->timeout_ms) {
@@ -1463,7 +1463,7 @@ circuit_build_times_set_timeout(circuit_build_times_t *cbt)
                cbt->total_build_times,
                tor_lround(cbt->timeout_ms/1000));
     log_info(LD_CIRC,
-             "Circuit timeout data: %lfms, %lfms, Xm: %d, a: %lf, r: %lf",
+             "Circuit timeout data: %fms, %fms, Xm: %d, a: %f, r: %f",
              cbt->timeout_ms, cbt->close_ms, cbt->Xm, cbt->alpha,
              timeout_rate);
   } else if (prev_timeout < tor_lround(cbt->timeout_ms/1000)) {
@@ -1474,13 +1474,13 @@ circuit_build_times_set_timeout(circuit_build_times_t *cbt)
                cbt->total_build_times,
                tor_lround(cbt->timeout_ms/1000));
     log_info(LD_CIRC,
-             "Circuit timeout data: %lfms, %lfms, Xm: %d, a: %lf, r: %lf",
+             "Circuit timeout data: %fms, %fms, Xm: %d, a: %f, r: %f",
              cbt->timeout_ms, cbt->close_ms, cbt->Xm, cbt->alpha,
              timeout_rate);
   } else {
     log_info(LD_CIRC,
-             "Set circuit build timeout to %lds (%lfms, %lfms, Xm: %d, a: %lf,"
-             " r: %lf) based on %d circuit times",
+             "Set circuit build timeout to %lds (%fms, %fms, Xm: %d, a: %f,"
+             " r: %f) based on %d circuit times",
              tor_lround(cbt->timeout_ms/1000),
              cbt->timeout_ms, cbt->close_ms, cbt->Xm, cbt->alpha, timeout_rate,
              cbt->total_build_times);

+ 2 - 2
src/or/control.c

@@ -3803,8 +3803,8 @@ control_event_buildtimeout_set(const circuit_build_times_t *cbt,
 
   send_control_event(EVENT_BUILDTIMEOUT_SET, ALL_FORMATS,
                      "650 BUILDTIMEOUT_SET %s TOTAL_TIMES=%lu "
-                     "TIMEOUT_MS=%lu XM=%lu ALPHA=%lf CUTOFF_QUANTILE=%lf "
-                     "TIMEOUT_RATE=%lf CLOSE_MS=%lu CLOSE_RATE=%lf\r\n",
+                     "TIMEOUT_MS=%lu XM=%lu ALPHA=%f CUTOFF_QUANTILE=%f "
+                     "TIMEOUT_RATE=%f CLOSE_MS=%lu CLOSE_RATE=%f\r\n",
                      type_string, (unsigned long)cbt->total_build_times,
                      (unsigned long)cbt->timeout_ms,
                      (unsigned long)cbt->Xm, cbt->alpha, qnt,

+ 1 - 1
src/or/relay.c

@@ -2101,7 +2101,7 @@ cell_ewma_set_scale_factor(const or_options_t *options,
     ewma_enabled = 1;
     log_info(LD_OR,
              "Enabled cell_ewma algorithm because of value in %s; "
-             "scale factor is %lf per %d seconds",
+             "scale factor is %f per %d seconds",
              source, ewma_scale_factor, EWMA_TICK_LEN);
   }
 }

+ 23 - 3
src/or/rendservice.c

@@ -958,6 +958,29 @@ rend_service_introduce(origin_circuit_t *circuit, const uint8_t *request,
              "PK-encrypted portion of INTRODUCE2 cell was truncated.");
     return -1;
   }
+
+  if (!service->accepted_intros)
+    service->accepted_intros = digestmap_new();
+
+  {
+    char pkpart_digest[DIGEST_LEN];
+    /* Check for replay of PK-encrypted portion.  It is slightly naughty to
+       use the same digestmap to check for this and for g^x replays, but
+       collisions are tremendously unlikely.
+    */
+    crypto_digest(pkpart_digest, (char*)request+DIGEST_LEN, keylen);
+    access_time = digestmap_get(service->accepted_intros, pkpart_digest);
+    if (access_time != NULL) {
+      log_warn(LD_REND, "Possible replay detected! We received an "
+               "INTRODUCE2 cell with same PK-encrypted part %d seconds ago. "
+               "Dropping cell.", (int)(now-*access_time));
+      return -1;
+    }
+    access_time = tor_malloc(sizeof(time_t));
+    *access_time = now;
+    digestmap_set(service->accepted_intros, pkpart_digest, access_time);
+  }
+
   /* Next N bytes is encrypted with service key */
   note_crypto_pk_op(REND_SERVER);
   r = crypto_pk_private_hybrid_decrypt(
@@ -1100,9 +1123,6 @@ rend_service_introduce(origin_circuit_t *circuit, const uint8_t *request,
 
   /* Check whether there is a past request with the same Diffie-Hellman,
    * part 1. */
-  if (!service->accepted_intros)
-    service->accepted_intros = digestmap_new();
-
   access_time = digestmap_get(service->accepted_intros, diffie_hellman_hash);
   if (access_time != NULL) {
     log_warn(LD_REND, "Possible replay detected! We received an "

+ 2 - 2
src/or/rephist.c

@@ -446,7 +446,7 @@ rep_hist_downrate_old_runs(time_t now)
     alpha *= STABILITY_ALPHA;
   }
 
-  log_info(LD_HIST, "Discounting all old stability info by a factor of %lf",
+  log_info(LD_HIST, "Discounting all old stability info by a factor of %f",
            alpha);
 
   /* Multiply every w_r_l, t_r_w pair by alpha. */
@@ -894,7 +894,7 @@ rep_hist_format_router_status(or_history_t *hist, time_t now)
                " weighted-uptime %lu\n"
                "mtbf %0.1lf\n"
                " weighted-run-length %lu\n"
-               " total-run-weights %lf\n",
+               " total-run-weights %f\n",
                up?"uptime-started ":"", up?sor_buf:"", up?" UTC\n":"",
                down?"downtime-started ":"", down?sod_buf:"", down?" UTC\n":"",
                wfu,

+ 5 - 5
src/or/routerlist.c

@@ -1831,7 +1831,7 @@ smartlist_choose_node_by_bandwidth_weights(smartlist_t *sl,
   sl_last_total_weighted_bw = weighted_bw;
 
   log_debug(LD_CIRC, "Choosing node for rule %s based on weights "
-            "Wg=%lf Wm=%lf We=%lf Wd=%lf with total bw %lf",
+            "Wg=%f Wm=%f We=%f Wd=%f with total bw %f",
             bandwidth_weight_rule_to_string(rule),
             Wg, Wm, We, Wd, weighted_bw);
 
@@ -1840,7 +1840,7 @@ smartlist_choose_node_by_bandwidth_weights(smartlist_t *sl,
     /* Don't warn when using bridges/relays not in the consensus */
     if (!have_unknown)
       log_warn(LD_CIRC,
-               "Weighted bandwidth is %lf in node selection for rule %s",
+               "Weighted bandwidth is %f in node selection for rule %s",
                weighted_bw, bandwidth_weight_rule_to_string(rule));
     tor_free(bandwidths);
     return smartlist_choose(sl);
@@ -1865,7 +1865,7 @@ smartlist_choose_node_by_bandwidth_weights(smartlist_t *sl,
     --i;
     log_warn(LD_BUG, "Round-off error in computing bandwidth had an effect on "
              " which router we chose. Please tell the developers. "
-             "%lf " U64_FORMAT " %lf", tmp, U64_PRINTF_ARG(rand_bw),
+             "%f " U64_FORMAT " %f", tmp, U64_PRINTF_ARG(rand_bw),
              weighted_bw);
   }
   tor_free(bandwidths);
@@ -2070,10 +2070,10 @@ smartlist_choose_node_by_bandwidth(smartlist_t *sl,
 
   log_debug(LD_CIRC, "Total weighted bw = "U64_FORMAT
             ", exit bw = "U64_FORMAT
-            ", nonexit bw = "U64_FORMAT", exit weight = %lf "
+            ", nonexit bw = "U64_FORMAT", exit weight = %f "
             "(for exit == %d)"
             ", guard bw = "U64_FORMAT
-            ", nonguard bw = "U64_FORMAT", guard weight = %lf "
+            ", nonguard bw = "U64_FORMAT", guard weight = %f "
             "(for guard == %d)",
             U64_PRINTF_ARG(total_bw),
             U64_PRINTF_ARG(total_exit_bw), U64_PRINTF_ARG(total_nonexit_bw),

+ 41 - 41
src/or/routerparse.c

@@ -2431,40 +2431,40 @@ networkstatus_verify_bw_weights(networkstatus_t *ns)
   // We use > 1 as the check for these because they are computed as integers.
   // Sometimes there are rounding errors.
   if (fabs(Wmm - weight_scale) > 1) {
-    log_warn(LD_BUG, "Wmm=%lf != "I64_FORMAT,
+    log_warn(LD_BUG, "Wmm=%f != "I64_FORMAT,
              Wmm, I64_PRINTF_ARG(weight_scale));
     valid = 0;
   }
 
   if (fabs(Wem - Wee) > 1) {
-    log_warn(LD_BUG, "Wem=%lf != Wee=%lf", Wem, Wee);
+    log_warn(LD_BUG, "Wem=%f != Wee=%f", Wem, Wee);
     valid = 0;
   }
 
   if (fabs(Wgm - Wgg) > 1) {
-    log_warn(LD_BUG, "Wgm=%lf != Wgg=%lf", Wgm, Wgg);
+    log_warn(LD_BUG, "Wgm=%f != Wgg=%f", Wgm, Wgg);
     valid = 0;
   }
 
   if (fabs(Weg - Wed) > 1) {
-    log_warn(LD_BUG, "Wed=%lf != Weg=%lf", Wed, Weg);
+    log_warn(LD_BUG, "Wed=%f != Weg=%f", Wed, Weg);
     valid = 0;
   }
 
   if (fabs(Wgg + Wmg - weight_scale) > 0.001*weight_scale) {
-    log_warn(LD_BUG, "Wgg=%lf != "I64_FORMAT" - Wmg=%lf", Wgg,
+    log_warn(LD_BUG, "Wgg=%f != "I64_FORMAT" - Wmg=%f", Wgg,
              I64_PRINTF_ARG(weight_scale), Wmg);
     valid = 0;
   }
 
   if (fabs(Wee + Wme - weight_scale) > 0.001*weight_scale) {
-    log_warn(LD_BUG, "Wee=%lf != "I64_FORMAT" - Wme=%lf", Wee,
+    log_warn(LD_BUG, "Wee=%f != "I64_FORMAT" - Wme=%f", Wee,
              I64_PRINTF_ARG(weight_scale), Wme);
     valid = 0;
   }
 
   if (fabs(Wgd + Wmd + Wed - weight_scale) > 0.001*weight_scale) {
-    log_warn(LD_BUG, "Wgd=%lf + Wmd=%lf + Wed=%lf != "I64_FORMAT,
+    log_warn(LD_BUG, "Wgd=%f + Wmd=%f + Wed=%f != "I64_FORMAT,
              Wgd, Wmd, Wed, I64_PRINTF_ARG(weight_scale));
     valid = 0;
   }
@@ -2519,10 +2519,10 @@ networkstatus_verify_bw_weights(networkstatus_t *ns)
     casename = "Case 1";
     if (fabs(Etotal-Mtotal) > 0.01*MAX(Etotal,Mtotal)) {
       log_warn(LD_DIR,
-               "Bw Weight Failure for %s: Etotal %lf != Mtotal %lf. "
+               "Bw Weight Failure for %s: Etotal %f != Mtotal %f. "
                "G="I64_FORMAT" M="I64_FORMAT" E="I64_FORMAT" D="I64_FORMAT
                " T="I64_FORMAT". "
-               "Wgg=%lf Wgd=%lf Wmg=%lf Wme=%lf Wmd=%lf Wee=%lf Wed=%lf",
+               "Wgg=%f Wgd=%f Wmg=%f Wme=%f Wmd=%f Wee=%f Wed=%f",
                casename, Etotal, Mtotal,
                I64_PRINTF_ARG(G), I64_PRINTF_ARG(M), I64_PRINTF_ARG(E),
                I64_PRINTF_ARG(D), I64_PRINTF_ARG(T),
@@ -2531,10 +2531,10 @@ networkstatus_verify_bw_weights(networkstatus_t *ns)
     }
     if (fabs(Etotal-Gtotal) > 0.01*MAX(Etotal,Gtotal)) {
       log_warn(LD_DIR,
-               "Bw Weight Failure for %s: Etotal %lf != Gtotal %lf. "
+               "Bw Weight Failure for %s: Etotal %f != Gtotal %f. "
                "G="I64_FORMAT" M="I64_FORMAT" E="I64_FORMAT" D="I64_FORMAT
                " T="I64_FORMAT". "
-               "Wgg=%lf Wgd=%lf Wmg=%lf Wme=%lf Wmd=%lf Wee=%lf Wed=%lf",
+               "Wgg=%f Wgd=%f Wmg=%f Wme=%f Wmd=%f Wee=%f Wed=%f",
                casename, Etotal, Gtotal,
                I64_PRINTF_ARG(G), I64_PRINTF_ARG(M), I64_PRINTF_ARG(E),
                I64_PRINTF_ARG(D), I64_PRINTF_ARG(T),
@@ -2543,10 +2543,10 @@ networkstatus_verify_bw_weights(networkstatus_t *ns)
     }
     if (fabs(Gtotal-Mtotal) > 0.01*MAX(Gtotal,Mtotal)) {
       log_warn(LD_DIR,
-               "Bw Weight Failure for %s: Mtotal %lf != Gtotal %lf. "
+               "Bw Weight Failure for %s: Mtotal %f != Gtotal %f. "
                "G="I64_FORMAT" M="I64_FORMAT" E="I64_FORMAT" D="I64_FORMAT
                " T="I64_FORMAT". "
-               "Wgg=%lf Wgd=%lf Wmg=%lf Wme=%lf Wmd=%lf Wee=%lf Wed=%lf",
+               "Wgg=%f Wgd=%f Wmg=%f Wme=%f Wmd=%f Wee=%f Wed=%f",
                casename, Mtotal, Gtotal,
                I64_PRINTF_ARG(G), I64_PRINTF_ARG(M), I64_PRINTF_ARG(E),
                I64_PRINTF_ARG(D), I64_PRINTF_ARG(T),
@@ -2575,10 +2575,10 @@ networkstatus_verify_bw_weights(networkstatus_t *ns)
       // Rtotal < Stotal
       if (Rtotal > Stotal) {
         log_warn(LD_DIR,
-                   "Bw Weight Failure for %s: Rtotal %lf > Stotal %lf. "
+                   "Bw Weight Failure for %s: Rtotal %f > Stotal %f. "
                    "G="I64_FORMAT" M="I64_FORMAT" E="I64_FORMAT" D="I64_FORMAT
                    " T="I64_FORMAT". "
-                   "Wgg=%lf Wgd=%lf Wmg=%lf Wme=%lf Wmd=%lf Wee=%lf Wed=%lf",
+                   "Wgg=%f Wgd=%f Wmg=%f Wme=%f Wmd=%f Wee=%f Wed=%f",
                    casename, Rtotal, Stotal,
                    I64_PRINTF_ARG(G), I64_PRINTF_ARG(M), I64_PRINTF_ARG(E),
                    I64_PRINTF_ARG(D), I64_PRINTF_ARG(T),
@@ -2588,10 +2588,10 @@ networkstatus_verify_bw_weights(networkstatus_t *ns)
       // Rtotal < T/3
       if (3*Rtotal > T) {
         log_warn(LD_DIR,
-                   "Bw Weight Failure for %s: 3*Rtotal %lf > T "
+                   "Bw Weight Failure for %s: 3*Rtotal %f > T "
                    I64_FORMAT". G="I64_FORMAT" M="I64_FORMAT" E="I64_FORMAT
                    " D="I64_FORMAT" T="I64_FORMAT". "
-                   "Wgg=%lf Wgd=%lf Wmg=%lf Wme=%lf Wmd=%lf Wee=%lf Wed=%lf",
+                   "Wgg=%f Wgd=%f Wmg=%f Wme=%f Wmd=%f Wee=%f Wed=%f",
                    casename, Rtotal*3, I64_PRINTF_ARG(T),
                    I64_PRINTF_ARG(G), I64_PRINTF_ARG(M), I64_PRINTF_ARG(E),
                    I64_PRINTF_ARG(D), I64_PRINTF_ARG(T),
@@ -2601,10 +2601,10 @@ networkstatus_verify_bw_weights(networkstatus_t *ns)
       // Stotal < T/3
       if (3*Stotal > T) {
         log_warn(LD_DIR,
-                   "Bw Weight Failure for %s: 3*Stotal %lf > T "
+                   "Bw Weight Failure for %s: 3*Stotal %f > T "
                    I64_FORMAT". G="I64_FORMAT" M="I64_FORMAT" E="I64_FORMAT
                    " D="I64_FORMAT" T="I64_FORMAT". "
-                   "Wgg=%lf Wgd=%lf Wmg=%lf Wme=%lf Wmd=%lf Wee=%lf Wed=%lf",
+                   "Wgg=%f Wgd=%f Wmg=%f Wme=%f Wmd=%f Wee=%f Wed=%f",
                    casename, Stotal*3, I64_PRINTF_ARG(T),
                    I64_PRINTF_ARG(G), I64_PRINTF_ARG(M), I64_PRINTF_ARG(E),
                    I64_PRINTF_ARG(D), I64_PRINTF_ARG(T),
@@ -2614,11 +2614,11 @@ networkstatus_verify_bw_weights(networkstatus_t *ns)
       // Mtotal > T/3
       if (3*Mtotal < T) {
         log_warn(LD_DIR,
-                   "Bw Weight Failure for %s: 3*Mtotal %lf < T "
+                   "Bw Weight Failure for %s: 3*Mtotal %f < T "
                    I64_FORMAT". "
                    "G="I64_FORMAT" M="I64_FORMAT" E="I64_FORMAT" D="I64_FORMAT
                    " T="I64_FORMAT". "
-                   "Wgg=%lf Wgd=%lf Wmg=%lf Wme=%lf Wmd=%lf Wee=%lf Wed=%lf",
+                   "Wgg=%f Wgd=%f Wmg=%f Wme=%f Wmd=%f Wee=%f Wed=%f",
                    casename, Mtotal*3, I64_PRINTF_ARG(T),
                    I64_PRINTF_ARG(G), I64_PRINTF_ARG(M), I64_PRINTF_ARG(E),
                    I64_PRINTF_ARG(D), I64_PRINTF_ARG(T),
@@ -2633,10 +2633,10 @@ networkstatus_verify_bw_weights(networkstatus_t *ns)
         casename = "Case 2b (balanced)";
         if (fabs(Etotal-Mtotal) > 0.01*MAX(Etotal,Mtotal)) {
           log_warn(LD_DIR,
-                   "Bw Weight Failure for %s: Etotal %lf != Mtotal %lf. "
+                   "Bw Weight Failure for %s: Etotal %f != Mtotal %f. "
                    "G="I64_FORMAT" M="I64_FORMAT" E="I64_FORMAT" D="I64_FORMAT
                    " T="I64_FORMAT". "
-                   "Wgg=%lf Wgd=%lf Wmg=%lf Wme=%lf Wmd=%lf Wee=%lf Wed=%lf",
+                   "Wgg=%f Wgd=%f Wmg=%f Wme=%f Wmd=%f Wee=%f Wed=%f",
                    casename, Etotal, Mtotal,
                    I64_PRINTF_ARG(G), I64_PRINTF_ARG(M), I64_PRINTF_ARG(E),
                    I64_PRINTF_ARG(D), I64_PRINTF_ARG(T),
@@ -2645,10 +2645,10 @@ networkstatus_verify_bw_weights(networkstatus_t *ns)
         }
         if (fabs(Etotal-Gtotal) > 0.01*MAX(Etotal,Gtotal)) {
           log_warn(LD_DIR,
-                   "Bw Weight Failure for %s: Etotal %lf != Gtotal %lf. "
+                   "Bw Weight Failure for %s: Etotal %f != Gtotal %f. "
                    "G="I64_FORMAT" M="I64_FORMAT" E="I64_FORMAT" D="I64_FORMAT
                    " T="I64_FORMAT". "
-                   "Wgg=%lf Wgd=%lf Wmg=%lf Wme=%lf Wmd=%lf Wee=%lf Wed=%lf",
+                   "Wgg=%f Wgd=%f Wmg=%f Wme=%f Wmd=%f Wee=%f Wed=%f",
                    casename, Etotal, Gtotal,
                    I64_PRINTF_ARG(G), I64_PRINTF_ARG(M), I64_PRINTF_ARG(E),
                    I64_PRINTF_ARG(D), I64_PRINTF_ARG(T),
@@ -2657,10 +2657,10 @@ networkstatus_verify_bw_weights(networkstatus_t *ns)
         }
         if (fabs(Gtotal-Mtotal) > 0.01*MAX(Gtotal,Mtotal)) {
           log_warn(LD_DIR,
-                   "Bw Weight Failure for %s: Mtotal %lf != Gtotal %lf. "
+                   "Bw Weight Failure for %s: Mtotal %f != Gtotal %f. "
                    "G="I64_FORMAT" M="I64_FORMAT" E="I64_FORMAT" D="I64_FORMAT
                    " T="I64_FORMAT". "
-                   "Wgg=%lf Wgd=%lf Wmg=%lf Wme=%lf Wmd=%lf Wee=%lf Wed=%lf",
+                   "Wgg=%f Wgd=%f Wmg=%f Wme=%f Wmd=%f Wee=%f Wed=%f",
                    casename, Mtotal, Gtotal,
                    I64_PRINTF_ARG(G), I64_PRINTF_ARG(M), I64_PRINTF_ARG(E),
                    I64_PRINTF_ARG(D), I64_PRINTF_ARG(T),
@@ -2670,10 +2670,10 @@ networkstatus_verify_bw_weights(networkstatus_t *ns)
       } else {
         if (fabs(Etotal-Gtotal) > 0.01*MAX(Etotal,Gtotal)) {
           log_warn(LD_DIR,
-                   "Bw Weight Failure for %s: Etotal %lf != Gtotal %lf. "
+                   "Bw Weight Failure for %s: Etotal %f != Gtotal %f. "
                    "G="I64_FORMAT" M="I64_FORMAT" E="I64_FORMAT" D="I64_FORMAT
                    " T="I64_FORMAT". "
-                   "Wgg=%lf Wgd=%lf Wmg=%lf Wme=%lf Wmd=%lf Wee=%lf Wed=%lf",
+                   "Wgg=%f Wgd=%f Wmg=%f Wme=%f Wmd=%f Wee=%f Wed=%f",
                    casename, Etotal, Gtotal,
                    I64_PRINTF_ARG(G), I64_PRINTF_ARG(M), I64_PRINTF_ARG(E),
                    I64_PRINTF_ARG(D), I64_PRINTF_ARG(T),
@@ -2700,10 +2700,10 @@ networkstatus_verify_bw_weights(networkstatus_t *ns)
       // Stotal < T/3
       if (3*Stotal > T) {
         log_warn(LD_DIR,
-                   "Bw Weight Failure for %s: 3*Stotal %lf > T "
+                   "Bw Weight Failure for %s: 3*Stotal %f > T "
                    I64_FORMAT". G="I64_FORMAT" M="I64_FORMAT" E="I64_FORMAT
                    " D="I64_FORMAT" T="I64_FORMAT". "
-                   "Wgg=%lf Wgd=%lf Wmg=%lf Wme=%lf Wmd=%lf Wee=%lf Wed=%lf",
+                   "Wgg=%f Wgd=%f Wmg=%f Wme=%f Wmd=%f Wee=%f Wed=%f",
                    casename, Stotal*3, I64_PRINTF_ARG(T),
                    I64_PRINTF_ARG(G), I64_PRINTF_ARG(M), I64_PRINTF_ARG(E),
                    I64_PRINTF_ARG(D), I64_PRINTF_ARG(T),
@@ -2713,10 +2713,10 @@ networkstatus_verify_bw_weights(networkstatus_t *ns)
       if (NS >= M) {
         if (fabs(NStotal-Mtotal) > 0.01*MAX(NStotal,Mtotal)) {
           log_warn(LD_DIR,
-                   "Bw Weight Failure for %s: NStotal %lf != Mtotal %lf. "
+                   "Bw Weight Failure for %s: NStotal %f != Mtotal %f. "
                    "G="I64_FORMAT" M="I64_FORMAT" E="I64_FORMAT" D="I64_FORMAT
                    " T="I64_FORMAT". "
-                   "Wgg=%lf Wgd=%lf Wmg=%lf Wme=%lf Wmd=%lf Wee=%lf Wed=%lf",
+                   "Wgg=%f Wgd=%f Wmg=%f Wme=%f Wmd=%f Wee=%f Wed=%f",
                    casename, NStotal, Mtotal,
                    I64_PRINTF_ARG(G), I64_PRINTF_ARG(M), I64_PRINTF_ARG(E),
                    I64_PRINTF_ARG(D), I64_PRINTF_ARG(T),
@@ -2727,10 +2727,10 @@ networkstatus_verify_bw_weights(networkstatus_t *ns)
         // if NS < M, NStotal > T/3 because only one of G or E is scarce
         if (3*NStotal < T) {
           log_warn(LD_DIR,
-                     "Bw Weight Failure for %s: 3*NStotal %lf < T "
+                     "Bw Weight Failure for %s: 3*NStotal %f < T "
                      I64_FORMAT". G="I64_FORMAT" M="I64_FORMAT
                      " E="I64_FORMAT" D="I64_FORMAT" T="I64_FORMAT". "
-                     "Wgg=%lf Wgd=%lf Wmg=%lf Wme=%lf Wmd=%lf Wee=%lf Wed=%lf",
+                     "Wgg=%f Wgd=%f Wmg=%f Wme=%f Wmd=%f Wee=%f Wed=%f",
                      casename, NStotal*3, I64_PRINTF_ARG(T),
                      I64_PRINTF_ARG(G), I64_PRINTF_ARG(M), I64_PRINTF_ARG(E),
                      I64_PRINTF_ARG(D), I64_PRINTF_ARG(T),
@@ -2742,10 +2742,10 @@ networkstatus_verify_bw_weights(networkstatus_t *ns)
       casename = "Case 3b";
       if (fabs(Etotal-Mtotal) > 0.01*MAX(Etotal,Mtotal)) {
         log_warn(LD_DIR,
-                 "Bw Weight Failure for %s: Etotal %lf != Mtotal %lf. "
+                 "Bw Weight Failure for %s: Etotal %f != Mtotal %f. "
                  "G="I64_FORMAT" M="I64_FORMAT" E="I64_FORMAT" D="I64_FORMAT
                  " T="I64_FORMAT". "
-                 "Wgg=%lf Wgd=%lf Wmg=%lf Wme=%lf Wmd=%lf Wee=%lf Wed=%lf",
+                 "Wgg=%f Wgd=%f Wmg=%f Wme=%f Wmd=%f Wee=%f Wed=%f",
                  casename, Etotal, Mtotal,
                  I64_PRINTF_ARG(G), I64_PRINTF_ARG(M), I64_PRINTF_ARG(E),
                  I64_PRINTF_ARG(D), I64_PRINTF_ARG(T),
@@ -2754,10 +2754,10 @@ networkstatus_verify_bw_weights(networkstatus_t *ns)
       }
       if (fabs(Etotal-Gtotal) > 0.01*MAX(Etotal,Gtotal)) {
         log_warn(LD_DIR,
-                 "Bw Weight Failure for %s: Etotal %lf != Gtotal %lf. "
+                 "Bw Weight Failure for %s: Etotal %f != Gtotal %f. "
                  "G="I64_FORMAT" M="I64_FORMAT" E="I64_FORMAT" D="I64_FORMAT
                  " T="I64_FORMAT". "
-                 "Wgg=%lf Wgd=%lf Wmg=%lf Wme=%lf Wmd=%lf Wee=%lf Wed=%lf",
+                 "Wgg=%f Wgd=%f Wmg=%f Wme=%f Wmd=%f Wee=%f Wed=%f",
                  casename, Etotal, Gtotal,
                  I64_PRINTF_ARG(G), I64_PRINTF_ARG(M), I64_PRINTF_ARG(E),
                  I64_PRINTF_ARG(D), I64_PRINTF_ARG(T),
@@ -2766,10 +2766,10 @@ networkstatus_verify_bw_weights(networkstatus_t *ns)
       }
       if (fabs(Gtotal-Mtotal) > 0.01*MAX(Gtotal,Mtotal)) {
         log_warn(LD_DIR,
-                 "Bw Weight Failure for %s: Mtotal %lf != Gtotal %lf. "
+                 "Bw Weight Failure for %s: Mtotal %f != Gtotal %f. "
                  "G="I64_FORMAT" M="I64_FORMAT" E="I64_FORMAT" D="I64_FORMAT
                  " T="I64_FORMAT". "
-                 "Wgg=%lf Wgd=%lf Wmg=%lf Wme=%lf Wmd=%lf Wee=%lf Wed=%lf",
+                 "Wgg=%f Wgd=%f Wmg=%f Wme=%f Wmd=%f Wee=%f Wed=%f",
                  casename, Mtotal, Gtotal,
                  I64_PRINTF_ARG(G), I64_PRINTF_ARG(M), I64_PRINTF_ARG(E),
                  I64_PRINTF_ARG(D), I64_PRINTF_ARG(T),

+ 2 - 2
src/test/test.c

@@ -902,7 +902,7 @@ test_circuit_timeout(void)
     timeout1 = circuit_build_times_calculate_timeout(&estimate,
                                   CBT_DEFAULT_QUANTILE_CUTOFF/100.0);
     circuit_build_times_set_timeout(&estimate);
-    log_notice(LD_CIRC, "Timeout1 is %lf, Xm is %d", timeout1, estimate.Xm);
+    log_notice(LD_CIRC, "Timeout1 is %f, Xm is %d", timeout1, estimate.Xm);
            /* 2% error */
   } while (fabs(circuit_build_times_cdf(&initial, timeout0) -
                 circuit_build_times_cdf(&initial, timeout1)) > 0.02);
@@ -917,7 +917,7 @@ test_circuit_timeout(void)
                                  CBT_DEFAULT_QUANTILE_CUTOFF/100.0);
 
   circuit_build_times_set_timeout(&final);
-  log_notice(LD_CIRC, "Timeout2 is %lf, Xm is %d", timeout2, final.Xm);
+  log_notice(LD_CIRC, "Timeout2 is %f, Xm is %d", timeout2, final.Xm);
 
   /* 5% here because some accuracy is lost due to histogram conversion */
   test_assert(fabs(circuit_build_times_cdf(&initial, timeout0) -