aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2010-10-04 23:51:30 -0400
committerNick Mathewson <nickm@torproject.org>2010-10-04 23:51:30 -0400
commit4080d9b0fa9dd4cab903599d6f7f3ed0785e2420 (patch)
tree54fe163d4141fd910a3b3cd73b08ffc528fdd053
parent9edd85aa4cb019499294b4c378961be8e42bcefe (diff)
downloadtor-4080d9b0fa9dd4cab903599d6f7f3ed0785e2420.tar
tor-4080d9b0fa9dd4cab903599d6f7f3ed0785e2420.tar.gz
Fix a couple more node_t-related nullpointer bugs
-rw-r--r--src/or/circuituse.c2
-rw-r--r--src/or/nodelist.c1
-rw-r--r--src/or/routerlist.c12
3 files changed, 10 insertions, 5 deletions
diff --git a/src/or/circuituse.c b/src/or/circuituse.c
index ca156d43c..399fc2890 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 a7946c9a2..8145217c2 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 05ecbe32b..2849f17ea 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);
}