Browse Source

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.
Sebastian Hahn 15 years ago
parent
commit
5aa9610dd6
2 changed files with 5 additions and 2 deletions
  1. 3 0
      ChangeLog
  2. 2 2
      src/or/routerparse.c

+ 3 - 0
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

+ 2 - 2
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 ),