[tor-commits] [tor/master] Avoid segfault when reading state file from ancient tor

arma at torproject.org arma at torproject.org
Mon Sep 10 22:29:58 UTC 2012


commit 8731a4e148e23d8edbb7f32bdfeee30c326f33cc
Author: Nick Mathewson <nickm at torproject.org>
Date:   Mon Sep 10 10:35:18 2012 -0400

    Avoid segfault when reading state file from ancient tor
    
    If s_values is null in rep_hist_load_bwhist_state_section, we would
    call smartlist_len() on it, and die.
    
    Fixes bug 6801.
---
 changes/bug6801  |    5 +++++
 src/or/rephist.c |    3 ++-
 2 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/changes/bug6801 b/changes/bug6801
new file mode 100644
index 0000000..ef21acc
--- /dev/null
+++ b/changes/bug6801
@@ -0,0 +1,5 @@
+  o Minor bugfixes:
+    - Avoid segfault when starting up having run with an extremely old
+      version of Tor and parsing its state file. Fixes bug 6801; bugfix on
+      0.2.2.23-alpha.
+
diff --git a/src/or/rephist.c b/src/or/rephist.c
index 720d14c..3b0d9dd 100644
--- a/src/or/rephist.c
+++ b/src/or/rephist.c
@@ -1675,7 +1675,8 @@ rep_hist_load_bwhist_state_section(bw_array_t *b,
 
   uint64_t v, mv;
   int i,ok,ok_m;
-  int have_maxima = (smartlist_len(s_values) == smartlist_len(s_maxima));
+  int have_maxima = s_maxima && s_values &&
+    (smartlist_len(s_values) == smartlist_len(s_maxima));
 
   if (s_values && s_begins >= now - NUM_SECS_BW_SUM_INTERVAL*NUM_TOTALS) {
     start = s_begins - s_interval*(smartlist_len(s_values));





More information about the tor-commits mailing list