summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Hahn <sebastian@torproject.org>2010-02-22 07:58:10 +0100
committerSebastian Hahn <sebastian@torproject.org>2010-02-22 09:16:26 +0100
commit5aa9610dd6bc85574c9861d533daec16b74088a0 (patch)
tree7aac46cf701e1d7c1351c4769f78aaf2695d3679
parentee8b0893af47ec3e2f6dcc459a10d4a3ad45434a (diff)
downloadtor-5aa9610dd6bc85574c9861d533daec16b74088a0.tar.gz
tor-5aa9610dd6bc85574c9861d533daec16b74088a0.zip
network-status-version must come first in a vote/consensus
Spec conformance issue: The code didn't force the network-status-version token to be the first token in a v3 vote or consensus. Problem discovered by Parakeep.
-rw-r--r--ChangeLog3
-rw-r--r--src/or/routerparse.c4
2 files changed, 5 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 2e75fc24b6..be7b30b182 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -42,6 +42,9 @@ Changes in version 0.2.2.9-alpha - 2010-02-22
control-spec.txt said they were.
- Refactor resolve_my_address() to not use gethostbyname() anymore.
Fixes bug 1244; bugfix on 0.0.2pre25. Reported by Mike Mestnik.
+ - Fix a spec conformance issue: the network-status-version token
+ must be the first token in a v3 consensus or vote. Discovered by
+ parakeep. Bugfix on 0.2.0.3-alpha.
o Code simplifications and refactoring:
- Generate our manpage and HTML documentation using Asciidoc. This
diff --git a/src/or/routerparse.c b/src/or/routerparse.c
index 13dc10c0ea..f4af7cd5e2 100644
--- a/src/or/routerparse.c
+++ b/src/or/routerparse.c
@@ -430,7 +430,7 @@ static token_rule_t client_keys_token_table[] = {
/** List of tokens allowed in V3 networkstatus votes. */
static token_rule_t networkstatus_token_table[] = {
- T1("network-status-version", K_NETWORK_STATUS_VERSION,
+ T1_START("network-status-version", K_NETWORK_STATUS_VERSION,
GE(1), NO_OBJ ),
T1("vote-status", K_VOTE_STATUS, GE(1), NO_OBJ ),
T1("published", K_PUBLISHED, CONCAT_ARGS, NO_OBJ ),
@@ -458,7 +458,7 @@ static token_rule_t networkstatus_token_table[] = {
/** List of tokens allowed in V3 networkstatus consensuses. */
static token_rule_t networkstatus_consensus_token_table[] = {
- T1("network-status-version", K_NETWORK_STATUS_VERSION,
+ T1_START("network-status-version", K_NETWORK_STATUS_VERSION,
GE(1), NO_OBJ ),
T1("vote-status", K_VOTE_STATUS, GE(1), NO_OBJ ),
T1("valid-after", K_VALID_AFTER, CONCAT_ARGS, NO_OBJ ),