mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-23 20:03:31 +01:00
r13325@catbus: nickm | 2007-06-08 15:02:37 -0400
Parse networkstatuses (v2, vote, and consensus) after generating them, and fail fast if there is a parse error. svn:r10540
This commit is contained in:
parent
2bb7005481
commit
1d6db7ec3d
@ -6,6 +6,10 @@ Changes in version 0.2.0.3-alpha - 2007-??-??
|
||||
- tor-gencert creates all files as readable to the file creator only, and
|
||||
write-protects the authority identity key.
|
||||
|
||||
o Minor features (directory authority):
|
||||
- Fail quickly and (relatively) harmlessly if we generate a network
|
||||
status document that is somehow malformed.
|
||||
|
||||
o Deprecated features:
|
||||
- RedirectExits is now deprecated.
|
||||
|
||||
|
@ -1983,10 +1983,19 @@ format_networkstatus_vote(crypto_pk_env_t *private_key,
|
||||
|
||||
note_crypto_pk_op(SIGN_DIR);
|
||||
if (router_append_dirobj_signature(outp,endp-outp,digest,private_key)<0) {
|
||||
log_warn(LD_BUG, "Unable to sign router status.");
|
||||
log_warn(LD_BUG, "Unable to sign networkstatus vote.");
|
||||
goto err;
|
||||
}
|
||||
|
||||
{
|
||||
networkstatus_vote_t *v;
|
||||
if (!(v = networkstatus_parse_vote_from_string(status, 1))) {
|
||||
log_err(LD_BUG,"Generated a networkstatus vote we couldn't parse.");
|
||||
goto err;
|
||||
}
|
||||
networkstatus_vote_free(v);
|
||||
}
|
||||
|
||||
goto done;
|
||||
|
||||
err:
|
||||
@ -2195,6 +2204,15 @@ generate_networkstatus_opinion(int v2)
|
||||
goto done;
|
||||
}
|
||||
|
||||
{
|
||||
networkstatus_t *ns;
|
||||
if (!(ns = networkstatus_parse_from_string(status))) {
|
||||
log_err(LD_BUG,"Generated a networkstatus we couldn't parse.");
|
||||
goto done;
|
||||
}
|
||||
networkstatus_free(ns);
|
||||
}
|
||||
|
||||
{
|
||||
cached_dir_t **ns_ptr = &the_v2_networkstatus;
|
||||
if (*ns_ptr)
|
||||
|
@ -623,6 +623,17 @@ networkstatus_compute_consensus(smartlist_t *votes,
|
||||
SMARTLIST_FOREACH(chunks, char *, cp, tor_free(cp));
|
||||
smartlist_free(chunks);
|
||||
|
||||
{
|
||||
networkstatus_vote_t *c;
|
||||
if (!(c = networkstatus_parse_vote_from_string(result, 0))) {
|
||||
log_err(LD_BUG,"Generated a networkstatus consensus we couldn't "
|
||||
"parse.");
|
||||
tor_free(result);
|
||||
return NULL;
|
||||
}
|
||||
networkstatus_vote_free(c);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user