Browse Source

Merge remote-tracking branch 'tor-github/pr/1082' into maint-0.4.1

Nick Mathewson 5 years ago
parent
commit
29842f68e7

+ 4 - 0
changes/bug30781

@@ -0,0 +1,4 @@
+  o Minor bugfixes (directory authorities):
+    - Stop crashing after parsing an unknown descriptor purpose annotation.
+      We think this bug can only be triggered by modifying a local file.
+      Fixes bug 30781; bugfix on 0.2.0.8-alpha.

+ 1 - 1
scripts/maint/practracker/exceptions.txt

@@ -189,7 +189,7 @@ problem function-size /src/feature/dirparse/ns_parse.c:networkstatus_verify_bw_w
 problem function-size /src/feature/dirparse/ns_parse.c:networkstatus_parse_vote_from_string() 638
 problem function-size /src/feature/dirparse/parsecommon.c:tokenize_string() 103
 problem function-size /src/feature/dirparse/parsecommon.c:get_next_token() 159
-problem function-size /src/feature/dirparse/routerparse.c:router_parse_entry_from_string() 554
+problem function-size /src/feature/dirparse/routerparse.c:router_parse_entry_from_string() 557
 problem function-size /src/feature/dirparse/routerparse.c:extrainfo_parse_entry_from_string() 210
 problem function-size /src/feature/hibernate/hibernate.c:accounting_parse_options() 109
 problem function-size /src/feature/hs/hs_cell.c:hs_cell_build_establish_intro() 115

+ 3 - 0
src/feature/dirparse/routerparse.c

@@ -556,6 +556,9 @@ router_parse_entry_from_string(const char *s, const char *end,
   if ((tok = find_opt_by_keyword(tokens, A_PURPOSE))) {
     tor_assert(tok->n_args);
     router->purpose = router_purpose_from_string(tok->args[0]);
+    if (router->purpose == ROUTER_PURPOSE_UNKNOWN) {
+      goto err;
+    }
   } else {
     router->purpose = ROUTER_PURPOSE_GENERAL;
   }