aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2010-03-04 18:37:40 -0500
committerNick Mathewson <nickm@torproject.org>2010-03-04 18:37:40 -0500
commit3ff092391b065561da339dc05614beb4e586a4d8 (patch)
tree5bc71a75744eff4b49bdae031142e57419b447e7
parent404af59ed553e7c1f4cef6668b6832e0bd1a8956 (diff)
downloadtor-3ff092391b065561da339dc05614beb4e586a4d8.tar.gz
tor-3ff092391b065561da339dc05614beb4e586a4d8.zip
Apply Roger's bug 1269 fix.
From http://archives.seul.org/tor/relays/Mar-2010/msg00006.html : As I understand it, the bug should show up on relays that don't set Address to an IP address (so they need to resolve their Address line or their hostname to guess their IP address), and their hostname or Address line fails to resolve -- at that point they'll pick a random 4 bytes out of memory and call that their address. At the same time, relays that *do* successfully resolve their address will ignore the result, and only come up with a useful address if their interface address happens to be a public IP address.
-rw-r--r--ChangeLog4
-rw-r--r--src/or/config.c2
2 files changed, 5 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 7b64d582ba..d98b262821 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,10 @@ Changes in version 0.2.1.25 - 2010-??-??
- When freeing a cipher, zero it out completely. We only zeroed
the first ptrsize bytes. Bugfix on tor-0.0.2pre8. Discovered
and patched by ekir. Fixes bug 1254.
+ - Avoid a bug that set IPs incorrectly on relays that did't set
+ Address to an IP address, when that address fails to resolve.
+ Fixes bug 1269.
+
o Minor bugfixes:
- Fix a dereference-then-NULL-check sequence when publishing
descriptors. Bugfix on tor-0.2.1.5-alpha. Discovered by ekir,
diff --git a/src/or/config.c b/src/or/config.c
index c7c1e19bcb..26e42e7009 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -2367,7 +2367,7 @@ resolve_my_address(int warn_severity, or_options_t *options,
if (tor_inet_aton(hostname, &in) == 0) {
/* then we have to resolve it */
explicit_ip = 0;
- if(!tor_lookup_hostname(hostname, &addr)) {
+ if (tor_lookup_hostname(hostname, &addr)) {
uint32_t interface_ip;
if (explicit_hostname) {