Browse Source

Resolve a crash when running as dirauth

When we're asked for our own descriptor, don't crash.
Sebastian Hahn 12 years ago
parent
commit
c98faa1a23
2 changed files with 7 additions and 2 deletions
  1. 4 0
      changes/bridgeauth_crash
  2. 3 2
      src/or/dirserv.c

+ 4 - 0
changes/bridgeauth_crash

@@ -0,0 +1,4 @@
+  o Major bugfixes:
+    - Don't crash when we, as the bridge authority, are asked for our own
+      descriptor. Bugfix on 0.2.3.7-alpha, reported by Lucky.
+

+ 3 - 2
src/or/dirserv.c

@@ -3590,8 +3590,9 @@ connection_dirserv_add_servers_to_outbuf(dir_connection_t *conn)
     if (options->BridgeAuthoritativeDir && by_fp) {
       const routerinfo_t *router =
           router_get_by_id_digest(sd->identity_digest);
-      tor_assert(router);
-      if (router->purpose == ROUTER_PURPOSE_BRIDGE)
+      /* router can be NULL here when the bridge auth is asked for its own
+       * descriptor. */
+      if (router && router->purpose == ROUTER_PURPOSE_BRIDGE)
         rep_hist_note_desc_served(sd->identity_digest);
     }
     body = signed_descriptor_get_body(sd);