Merge remote-tracking branch 'rransom-tor/bug4411'

This commit is contained in:
Nick Mathewson
2011-11-07 11:57:07 -05:00
2 changed files with 23 additions and 2 deletions
+10
View File
@@ -0,0 +1,10 @@
o Major bugfixes
- Fix a rare assertion failure when checking whether a v0 hidden
service descriptor has any usable introduction points left, and
we don't have enough information to build a circuit to the first
intro point named in the descriptor. The HS client code in
0.2.3.x no longer uses v0 HS descriptors, but this assertion can
trigger on (and crash) v0 HS authorities. Fixes bug 4411.
Bugfix on 0.2.3.1-alpha; diagnosed by frosty_un.
+13 -2
View File
@@ -1048,6 +1048,7 @@ rend_client_get_random_intro_impl(const rend_cache_entry_t *entry,
/* Do we need to look up the router or is the extend info complete? */
if (!intro->extend_info->onion_key) {
const node_t *node;
extend_info_t *new_extend_info;
if (tor_digest_is_zero(intro->extend_info->identity_digest))
node = node_get_by_hex_id(intro->extend_info->nickname);
else
@@ -1058,8 +1059,18 @@ rend_client_get_random_intro_impl(const rend_cache_entry_t *entry,
smartlist_del(usable_nodes, i);
goto again;
}
extend_info_free(intro->extend_info);
intro->extend_info = extend_info_from_node(node);
new_extend_info = extend_info_from_node(node);
if (!new_extend_info) {
log_info(LD_REND, "We don't have a descriptor for the intro-point relay "
"'%s'; trying another.",
extend_info_describe(intro->extend_info));
smartlist_del(usable_nodes, i);
goto again;
} else {
extend_info_free(intro->extend_info);
intro->extend_info = new_extend_info;
}
tor_assert(intro->extend_info != NULL);
}
/* Check if we should refuse to talk to this router. */
if (strict &&