summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2019-06-11 08:41:48 -0400
committerNick Mathewson <nickm@torproject.org>2019-06-11 08:41:48 -0400
commit29842f68e7a4f38d69509191fba9a7ffb28cdcd8 (patch)
treea98823441f9358fcdd112094cc5c18f7f8e290ab
parenteab9dc06af32ceb3826d068cf5bc55db68ad6c61 (diff)
parentb07b1a4f6d1aae3755db7ccfa9e7417214375f13 (diff)
downloadtor-29842f68e7a4f38d69509191fba9a7ffb28cdcd8.tar.gz
tor-29842f68e7a4f38d69509191fba9a7ffb28cdcd8.zip
Merge remote-tracking branch 'tor-github/pr/1082' into maint-0.4.1
-rw-r--r--changes/bug307814
-rw-r--r--scripts/maint/practracker/exceptions.txt2
-rw-r--r--src/feature/dirparse/routerparse.c3
3 files changed, 8 insertions, 1 deletions
diff --git a/changes/bug30781 b/changes/bug30781
new file mode 100644
index 0000000000..7c7adf470e
--- /dev/null
+++ b/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.
diff --git a/scripts/maint/practracker/exceptions.txt b/scripts/maint/practracker/exceptions.txt
index eb0625b8d3..db9bf34e25 100644
--- a/scripts/maint/practracker/exceptions.txt
+++ b/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
diff --git a/src/feature/dirparse/routerparse.c b/src/feature/dirparse/routerparse.c
index ff7e15f1f2..f78c46f186 100644
--- a/src/feature/dirparse/routerparse.c
+++ b/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;
}