Explorar o código

Check if fallbacks support extrainfo descriptors before requesting them

When requesting extrainfo descriptors from a trusted directory
server, check whether it is an authority or a fallback directory
which supports extrainfo descriptors.

Fixes bug 18489; bugfix on 90f6071d8d in tor-0.2.4.7-alpha.

Reported by "atagar", patch by "teor".
teor (Tim Wilson-Brown) %!s(int64=8) %!d(string=hai) anos
pai
achega
b1569e39c8
Modificáronse 2 ficheiros con 9 adicións e 1 borrados
  1. 6 0
      changes/bug18489
  2. 3 1
      src/or/routerlist.c

+ 6 - 0
changes/bug18489

@@ -0,0 +1,6 @@
+  o Minor bugfixes (fallback directory mirrors):
+    - When requesting extrainfo descriptors from a trusted directory
+      server, check whether it is an authority or a fallback directory
+      which supports extrainfo descriptors.
+      Fixes bug 18489; bugfix on 90f6071d8d in tor-0.2.4.7-alpha.
+      Reported by "atagar", patch by "teor".

+ 3 - 1
src/or/routerlist.c

@@ -1857,8 +1857,10 @@ router_pick_trusteddirserver_impl(const smartlist_t *sourcelist,
       if (!d->is_running) continue;
       if ((type & d->type) == 0)
         continue;
+      int is_trusted_extrainfo = router_digest_is_trusted_dir_type(
+                                 d->digest, EXTRAINFO_DIRINFO);
       if ((type & EXTRAINFO_DIRINFO) &&
-          !router_supports_extrainfo(d->digest, 1))
+          !router_supports_extrainfo(d->digest, is_trusted_extrainfo))
         continue;
       if (requireother && me && router_digest_is_me(d->digest))
         continue;