diff --git a/src/or/circuituse.c b/src/or/circuituse.c index ca156d43c9..399fc28904 100644 --- a/src/or/circuituse.c +++ b/src/or/circuituse.c @@ -1313,7 +1313,7 @@ circuit_get_open_circ_or_launch(edge_connection_t *conn, const node_t *r; int opt = conn->chosen_exit_optional; r = node_get_by_nickname(conn->chosen_exit_name, 1); - if (r) { + if (r && node_has_descriptor(r)) { extend_info = extend_info_from_node(r); } else { log_debug(LD_DIR, "considering %d, %s", diff --git a/src/or/nodelist.c b/src/or/nodelist.c index a7946c9a2c..8145217c2f 100644 --- a/src/or/nodelist.c +++ b/src/or/nodelist.c @@ -514,6 +514,7 @@ node_get_by_nickname(const char *nickname, int warn_if_unnamed) const char * node_get_nickname(const node_t *node) { + tor_assert(node); if (node->rs) return node->rs->nickname; else if (node->ri) diff --git a/src/or/routerlist.c b/src/or/routerlist.c index 05ecbe32b4..2849f17ea7 100644 --- a/src/or/routerlist.c +++ b/src/or/routerlist.c @@ -1321,9 +1321,13 @@ nodelist_add_node_family(smartlist_t *sl, const node_t *node) { /* XXXX MOVE */ const smartlist_t *all_nodes = nodelist_get_list(); - const smartlist_t *declared_family = node_get_declared_family(node); + const smartlist_t *declared_family; or_options_t *options = get_options(); + tor_assert(node); + + declared_family = node_get_declared_family(node); + /* First, add any nodes with similar network addresses. */ if (options->EnforceDistinctSubnets) { tor_addr_t node_addr; @@ -1334,7 +1338,7 @@ nodelist_add_node_family(smartlist_t *sl, const node_t *node) node_get_addr(node2, &a); if (addrs_in_same_network_family(&a, &node_addr)) smartlist_add(sl, (void*)node2); - } SMARTLIST_FOREACH_END(node); + } SMARTLIST_FOREACH_END(node2); } /* Now, add all nodes in the declared_family of this node, if they @@ -1349,12 +1353,12 @@ nodelist_add_node_family(smartlist_t *sl, const node_t *node) continue; if (!(family2 = node_get_declared_family(node2))) continue; - SMARTLIST_FOREACH(family2, const char *, name2, { + SMARTLIST_FOREACH_BEGIN(family2, const char *, name2) { if (node_nickname_matches(node, name2)) { smartlist_add(sl, (void*)node2); break; } - }); + } SMARTLIST_FOREACH_END(name2); } SMARTLIST_FOREACH_END(name); }