Browse Source

Clear the address when node_get_prim_orport() returns early

Fixes bug 23874; bugfix on 0.2.8.2-alpha.
teor 6 years ago
parent
commit
5bca66be49
2 changed files with 11 additions and 0 deletions
  1. 3 0
      changes/bug23874
  2. 8 0
      src/or/nodelist.c

+ 3 - 0
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.

+ 8 - 0
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 */