summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorteor <teor2345@gmail.com>2017-10-15 16:45:15 -0400
committerteor <teor2345@gmail.com>2017-10-15 16:48:36 -0400
commit5bca66be497f18b94a85ad8eb836fff5a356627d (patch)
treebbc32c78c50c32892c504e4b77ea6a5e0b0c6b5a
parent43ebe54a24d3210ef037f7e2b67fad9597361bab (diff)
downloadtor-5bca66be497f18b94a85ad8eb836fff5a356627d.tar.gz
tor-5bca66be497f18b94a85ad8eb836fff5a356627d.zip
Clear the address when node_get_prim_orport() returns early
Fixes bug 23874; bugfix on 0.2.8.2-alpha.
-rw-r--r--changes/bug238743
-rw-r--r--src/or/nodelist.c8
2 files changed, 11 insertions, 0 deletions
diff --git a/changes/bug23874 b/changes/bug23874
new file mode 100644
index 0000000000..bf6620553d
--- /dev/null
+++ b/changes/bug23874
@@ -0,0 +1,3 @@
+ o Minor bugfixes (memory safety):
+ - Clear the address when node_get_prim_orport() returns early.
+ Fixes bug 23874; bugfix on 0.2.8.2-alpha.
diff --git a/src/or/nodelist.c b/src/or/nodelist.c
index 070e2e9e0d..0e9a651818 100644
--- a/src/or/nodelist.c
+++ b/src/or/nodelist.c
@@ -1031,6 +1031,14 @@ node_get_prim_orport(const node_t *node, tor_addr_port_t *ap_out)
node_assert_ok(node);
tor_assert(ap_out);
+ /* Clear the address, as a safety precaution if calling functions ignore the
+ * return value */
+ tor_addr_make_null(&ap_out->addr, AF_INET);
+ ap_out->port = 0;
+
+ /* Check ri first, because rewrite_node_address_for_bridge() updates
+ * node->ri with the configured bridge address. */
+
RETURN_IPV4_AP(node->ri, or_port, ap_out);
RETURN_IPV4_AP(node->rs, or_port, ap_out);
/* Microdescriptors only have an IPv6 address */