summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabian Keil <fk@fabiankeil.de>2015-09-28 16:57:07 +0200
committerNick Mathewson <nickm@torproject.org>2015-09-29 10:17:00 +0200
commit3ea834ce0a63f275fd806f9ebeec64a2bbcd1b55 (patch)
tree9424bce34f56296bb40833b6e114ead3a4f165c8
parent216a9f7aecb19d717bed20557c2fd7d39333dba0 (diff)
downloadtor-3ea834ce0a63f275fd806f9ebeec64a2bbcd1b55.tar.gz
tor-3ea834ce0a63f275fd806f9ebeec64a2bbcd1b55.zip
get_interface_address6_list(): Bring back a return code check
... that was removed by 31eb486c46 which first appeared in 0.2.7.3-rc. If tor is running in a ElectroBSD (or FreeBSD) jail it can't get any IP addresses that aren't assigned to the jail by looking at the interfaces and (by design) the get_interface_address6_via_udp_socket_hack() fallback doesn't work either. The missing return code check resulted in tor_addr_is_internal() complaining about a "non-IP address of type 49", due to reading uninitialised memory. Fixes #17173.
-rw-r--r--src/common/address.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/common/address.c b/src/common/address.c
index 163db59ac4..fc85f8eba2 100644
--- a/src/common/address.c
+++ b/src/common/address.c
@@ -1711,7 +1711,8 @@ MOCK_IMPL(smartlist_t *,get_interface_address6_list,(int severity,
}
/* Okay, the smart way is out. */
- get_interface_address6_via_udp_socket_hack(severity,family,&addr);
+ if (get_interface_address6_via_udp_socket_hack(severity,family,&addr))
+ return smartlist_new();
if (!include_internal && tor_addr_is_internal(&addr, 0)) {
return smartlist_new();
} else {