summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoger Dingledine <arma@torproject.org>2014-09-19 21:44:23 -0400
committerRoger Dingledine <arma@torproject.org>2014-09-19 21:44:23 -0400
commit0b004ba5c0c00b9d367b5a1e305f9e4e9adc65b6 (patch)
tree966587a60558be3021054b354d74329baf7f91dc
parent396ac67f62de47648193b922122da65a392a1b98 (diff)
parentbe0e26272b3e795b902394acc9b66642fcdc1f21 (diff)
downloadtor-0b004ba5c0c00b9d367b5a1e305f9e4e9adc65b6.tar.gz
tor-0b004ba5c0c00b9d367b5a1e305f9e4e9adc65b6.zip
Merge branch 'maint-0.2.5' into release-0.2.5
-rw-r--r--changes/bug13151-client13
-rw-r--r--src/or/rendclient.c2
2 files changed, 14 insertions, 1 deletions
diff --git a/changes/bug13151-client b/changes/bug13151-client
new file mode 100644
index 0000000000..1218dfdfab
--- /dev/null
+++ b/changes/bug13151-client
@@ -0,0 +1,13 @@
+ o Major bugfixes:
+ - Clients now send the correct address for their chosen rendezvous
+ point when trying to access a hidden service. They used to send
+ the wrong address, which would still work some of the time because
+ they also sent the identity digest of the rendezvous point, and if
+ the hidden service happened to try connecting to the rendezvous
+ point from a relay that already had a connection open to it,
+ the relay would reuse that connection. Now connections to hidden
+ services should be more robust and faster. Also, this bug meant
+ that clients were leaking to the hidden service whether they were
+ on a little-endian (common) or big-endian (rare) system, which for
+ some users might have reduced their anonymity. Fixes bug 13151;
+ bugfix on 0.2.1.5-alpha.
diff --git a/src/or/rendclient.c b/src/or/rendclient.c
index d42024010d..19a8cef1bf 100644
--- a/src/or/rendclient.c
+++ b/src/or/rendclient.c
@@ -271,7 +271,7 @@ rend_client_send_introduction(origin_circuit_t *introcirc,
extend_info_t *extend_info = rendcirc->build_state->chosen_exit;
int klen;
/* nul pads */
- set_uint32(tmp+v3_shift+1, tor_addr_to_ipv4h(&extend_info->addr));
+ set_uint32(tmp+v3_shift+1, tor_addr_to_ipv4n(&extend_info->addr));
set_uint16(tmp+v3_shift+5, htons(extend_info->port));
memcpy(tmp+v3_shift+7, extend_info->identity_digest, DIGEST_LEN);
klen = crypto_pk_asn1_encode(extend_info->onion_key,