瀏覽代碼

Fix 8833: crash bug from using NULL node->ri in dirserv.c

It appears that moria1 crashed because of one instance of this (the
one in router_counts_toward_thresholds).  The other instance I fixed
won't actually have broken anything, but I think it's more clear this
way.

Fixes bug 8833; bugfix on 0.2.4.12-alpha.
Nick Mathewson 11 年之前
父節點
當前提交
139d367f29
共有 2 個文件被更改,包括 5 次插入2 次删除
  1. 3 0
      changes/bug8833
  2. 2 2
      src/or/dirserv.c

+ 3 - 0
changes/bug8833

@@ -0,0 +1,3 @@
+  o Major bugfixes (directory authority):
+    - Fix a crash bug when building a consensus using an older consensus as
+      its basis. Fixes bug 8833. Bugfix on 0.2.4.12-alpha.

+ 2 - 2
src/or/dirserv.c

@@ -1889,7 +1889,7 @@ router_counts_toward_thresholds(const node_t *node, time_t now,
 {
   /* Have measured bw? */
   int have_mbw =
-    dirserv_has_measured_bw(node->ri->cache_info.identity_digest);
+    dirserv_has_measured_bw(node->identity);
   uint64_t min_bw_kb = ABSOLUTE_MIN_BW_VALUE_TO_CONSIDER_KB;
   const or_options_t *options = get_options();
 
@@ -1959,7 +1959,7 @@ dirserv_compute_performance_thresholds(routerlist_t *rl,
     if (router_counts_toward_thresholds(node, now, omit_as_sybil,
                                         require_mbw)) {
       routerinfo_t *ri = node->ri;
-      const char *id = ri->cache_info.identity_digest;
+      const char *id = node->identity;
       uint32_t bw_kb;
       node->is_exit = (!router_exit_policy_rejects_all(ri) &&
                        exit_policy_is_general_exit(ri->exit_policy));