diff options
author | Nick Mathewson <nickm@torproject.org> | 2010-02-26 01:02:20 -0500 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2010-02-26 01:02:20 -0500 |
commit | 1e1d471002c976477919b2e41fbe62457998e5c0 (patch) | |
tree | 104e0dd83d38d0a81eed9e46fce6617d33e27304 | |
parent | 0950d95aee48835357f517a9e6c42f4ed208f362 (diff) | |
download | tor-1e1d471002c976477919b2e41fbe62457998e5c0.tar.gz tor-1e1d471002c976477919b2e41fbe62457998e5c0.zip |
Don't believe unauthenticated info in a consensus.
Don't allow anything but directory-signature tokens in a consensus after
the first directory-signature token. Fixes bug in bandwidth-weights branch.
Found by "outofwords."
-rw-r--r-- | src/or/routerparse.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/or/routerparse.c b/src/or/routerparse.c index 9e197c4377..99cd29d6d7 100644 --- a/src/or/routerparse.c +++ b/src/or/routerparse.c @@ -3075,6 +3075,18 @@ networkstatus_parse_vote_from_string(const char *s, const char **eos_out, goto err; } + { + int found_sig = 0; + SMARTLIST_FOREACH_BEGIN(footer_tokens, directory_token_t *, _tok) { + if (tok->tp == K_DIRECTORY_SIGNATURE) + found_sig = 1; + else if (found_sig) { + log_warn(LD_DIR, "Extraneous token after first directory-signature"); + goto err; + } + } SMARTLIST_FOREACH_END(_tok); + } + tok = find_opt_by_keyword(footer_tokens, K_BW_WEIGHTS); if (tok) { ns->weight_params = smartlist_create(); |