Browse Source

Fix a spec conformance issue when parsing a ns vote

A vote may only contain exactly one signature. Make sure we reject
votes that violate this.

Problem found by Rotor, who also helped writing the patch. Thanks!
Sebastian Hahn 16 years ago
parent
commit
c1a6fb42ac
2 changed files with 6 additions and 0 deletions
  1. 2 0
      ChangeLog
  2. 4 0
      src/or/routerparse.c

+ 2 - 0
ChangeLog

@@ -5,6 +5,8 @@ Changes in version 0.2.2.2-alpha - 2009-09-??
       Found by Matt Edman. Bugfix on 0.2.0.16-alpha.
     - Fix parsing for memory or time units given without a space between
       the number and the unit.  Bugfix on 0.2.2.1-alpha; fixes bug 1076.
+    - A networkstatus vote must contain exactly one signature. Spec
+      conformance issue. Bugfix on 0.2.0.3-alpha.
 
 
 Changes in version 0.2.2.1-alpha - 2009-08-26

+ 4 - 0
src/or/routerparse.c

@@ -2616,6 +2616,10 @@ networkstatus_parse_vote_from_string(const char *s, const char **eos_out,
   if (! n_signatures) {
     log_warn(LD_DIR, "No signatures on networkstatus vote.");
     goto err;
+  } else if (ns->type == NS_TYPE_VOTE && n_signatures != 1) {
+    log_warn(LD_DIR, "Received more than one signature on a "
+             "network-status vote.");
+    goto err;
   }
 
   if (eos_out)