mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-27 22: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
|
- tor-gencert creates all files as readable to the file creator only, and
|
||||||
write-protects the authority identity key.
|
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:
|
o Deprecated features:
|
||||||
- RedirectExits is now deprecated.
|
- RedirectExits is now deprecated.
|
||||||
|
|
||||||
|
@ -1983,10 +1983,19 @@ format_networkstatus_vote(crypto_pk_env_t *private_key,
|
|||||||
|
|
||||||
note_crypto_pk_op(SIGN_DIR);
|
note_crypto_pk_op(SIGN_DIR);
|
||||||
if (router_append_dirobj_signature(outp,endp-outp,digest,private_key)<0) {
|
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;
|
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;
|
goto done;
|
||||||
|
|
||||||
err:
|
err:
|
||||||
@ -2195,6 +2204,15 @@ generate_networkstatus_opinion(int v2)
|
|||||||
goto done;
|
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;
|
cached_dir_t **ns_ptr = &the_v2_networkstatus;
|
||||||
if (*ns_ptr)
|
if (*ns_ptr)
|
||||||
|
@ -623,6 +623,17 @@ networkstatus_compute_consensus(smartlist_t *votes,
|
|||||||
SMARTLIST_FOREACH(chunks, char *, cp, tor_free(cp));
|
SMARTLIST_FOREACH(chunks, char *, cp, tor_free(cp));
|
||||||
smartlist_free(chunks);
|
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;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user