Browse Source

Merge remote branch 'origin/maint-0.2.1' into maint-0.2.2

Nick Mathewson 14 years ago
parent
commit
35fcec3880
4 changed files with 17 additions and 2 deletions
  1. 4 0
      changes/all_descs
  2. 3 2
      changes/ipv6_crash
  3. 2 0
      src/or/dirserv.c
  4. 8 0
      src/or/routerparse.c

+ 4 - 0
changes/all_descs

@@ -0,0 +1,4 @@
+  o Major bugfixes (bridge authority)
+    - Do not allow encrypte requests for "all" bridges to return all
+      bridges.
+

+ 3 - 2
changes/ipv6_crash

@@ -1,3 +1,4 @@
-  o Major bugfixes (directory authority)
+  o Major bugfixes:
     - Fix a crash in parsing router descriptors containing IPv6
-      addresses.  Bugfix on 0.2.1.3-alpha.
+      addresses.  This one crashed the directory authorities when somebody
+      fired up some experimental code. Bugfix on 0.2.1.3-alpha.

+ 2 - 0
src/or/dirserv.c

@@ -2970,6 +2970,8 @@ dirserv_get_routerdesc_fingerprints(smartlist_t *fps_out, const char *key,
     SMARTLIST_FOREACH(rl->routers, routerinfo_t *, r,
                       smartlist_add(fps_out,
                       tor_memdup(r->cache_info.identity_digest, DIGEST_LEN)));
+    /* Treat "all" requests as if they were unencrypted */
+    for_unencrypted_conn = 1;
   } else if (!strcmp(key, "authority")) {
     routerinfo_t *ri = router_get_my_routerinfo();
     if (ri)

+ 8 - 0
src/or/routerparse.c

@@ -267,6 +267,8 @@ typedef struct token_rule_t {
 static token_rule_t routerdesc_token_table[] = {
   T0N("reject",              K_REJECT,              ARGS,    NO_OBJ ),
   T0N("accept",              K_ACCEPT,              ARGS,    NO_OBJ ),
+  T0N("reject6",             K_REJECT6,             ARGS,    NO_OBJ ),
+  T0N("accept6",             K_ACCEPT6,             ARGS,    NO_OBJ ),
   T1_START( "router",        K_ROUTER,              GE(5),   NO_OBJ ),
   T1( "signing-key",         K_SIGNING_KEY,         NO_ARGS, NEED_KEY_1024 ),
   T1( "onion-key",           K_ONION_KEY,           NO_ARGS, NEED_KEY_1024 ),
@@ -1503,6 +1505,12 @@ router_parse_entry_from_string(const char *s, const char *end,
       router->has_old_dnsworkers = 1;
   }
 
+  if (find_opt_by_keyword(tokens, K_REJECT6) ||
+      find_opt_by_keyword(tokens, K_ACCEPT6)) {
+    log_warn(LD_DIR, "Rejecting router with reject6/accept6 line: they crash "
+             "older Tors.");
+    goto err;
+  }
   exit_policy_tokens = find_all_exitpolicy(tokens);
   if (!smartlist_len(exit_policy_tokens)) {
     log_warn(LD_DIR, "No exit policy tokens in descriptor.");