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!
This commit is contained in:
Sebastian Hahn 2009-09-13 21:47:55 +02:00
parent 3de5ac9baa
commit c1a6fb42ac
2 changed files with 6 additions and 0 deletions

View File

@ -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

View File

@ -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)