Forráskód Böngészése

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.
Nick Mathewson 11 éve
szülő
commit
8731a4e148
2 módosított fájl, 7 hozzáadás és 1 törlés
  1. 5 0
      changes/bug6801
  2. 2 1
      src/or/rephist.c

+ 5 - 0
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.
+

+ 2 - 1
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));