[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[or-cvs] [tor/master] Segfault less during consensus generation without params



Author: Sebastian Hahn <sebastian@xxxxxxxxxxxxxx>
Date: Sun, 21 Mar 2010 06:03:13 +0100
Subject: Segfault less during consensus generation without params
Commit: cae769d646e721efff3c286a2c46769680dc01f5

If no authority votes on any params, Tor authorities segfault when
trying to make a new consensus from the votes. Let's change that.
---
 ..._segfault_while_making_consensus_without_params |    5 +++++
 src/or/dirvote.c                                   |   10 ++++++----
 2 files changed, 11 insertions(+), 4 deletions(-)
 create mode 100644 changes/dont_segfault_while_making_consensus_without_params

diff --git a/changes/dont_segfault_while_making_consensus_without_params b/changes/dont_segfault_while_making_consensus_without_params
new file mode 100644
index 0000000..e0bcd40
--- /dev/null
+++ b/changes/dont_segfault_while_making_consensus_without_params
@@ -0,0 +1,5 @@
+  o Minor bugfixes:
+    - When none of the authorities vote on any params, Tor segfaults when
+      trying to make the consensus from the votes. This is currently
+      not critical, because authorities do include params in their votes.
+      Bugfix on 0.2.2.10-alpha, fixes bug 1322.
diff --git a/src/or/dirvote.c b/src/or/dirvote.c
index ecf236e..30e340c 100644
--- a/src/or/dirvote.c
+++ b/src/or/dirvote.c
@@ -1757,10 +1757,12 @@ networkstatus_compute_consensus(smartlist_t *votes,
     // Parse params, extract BW_WEIGHT_SCALE if present
     // DO NOT use consensus_param_bw_weight_scale() in this code!
     // The consensus is not formed yet!
-    if (strcmpstart(params, "bwweightscale=") == 0)
-      bw_weight_param = params;
-    else
-      bw_weight_param = strstr(params, " bwweightscale=");
+    if (params) {
+      if (strcmpstart(params, "bwweightscale=") == 0)
+        bw_weight_param = params;
+      else
+        bw_weight_param = strstr(params, " bwweightscale=");
+    }
 
     if (bw_weight_param) {
       int ok=0;
-- 
1.6.5