summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoger Dingledine <arma@torproject.org>2008-09-01 22:25:02 +0000
committerRoger Dingledine <arma@torproject.org>2008-09-01 22:25:02 +0000
commita04e98dd20acffa23f5033e786a2555caa406c3d (patch)
tree36065172403d67817372994b20ff7a82972e072c
parente78e00411820973c9f69322ea1ad2dd133620a25 (diff)
downloadtor-a04e98dd20acffa23f5033e786a2555caa406c3d.tar.gz
tor-a04e98dd20acffa23f5033e786a2555caa406c3d.zip
backport r16698: don't use a new entry guard that's also your exit
svn:r16729
-rw-r--r--ChangeLog4
-rw-r--r--doc/TODO.0202
-rw-r--r--src/or/circuitbuild.c7
3 files changed, 11 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 54c6008be0..d017046f08 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -7,6 +7,10 @@ Changes in version 0.2.0.31 - 2008-09-??
a digest of all zeroes, or asks to extend back to the relay that
sent the extend cell, tear down the circuit. Ideas suggested
by rovv.
+ - If not enough of our entry guards are available so we add a new
+ one, we might use the new one even if it overlapped with the
+ current circuit's exit relay (or its family). Anonymity bugfix
+ pointed out by rovv.
o Minor bugfixes:
- Fix a small alignment and memory-wasting bug on buffer chunks. Spotted
diff --git a/doc/TODO.020 b/doc/TODO.020
index a5c9669894..865c59fd74 100644
--- a/doc/TODO.020
+++ b/doc/TODO.020
@@ -13,5 +13,5 @@ Backport for 0.2.0 once better tested:
- r16143: generate stream close events from connection_edge_destroy().
o r16450: open /dev/pf before dropping privileges.
o r16605: relays reject risky extend cells.
- - r16698: don't use a new entry guard that's also your exit.
+ o r16698: don't use a new entry guard that's also your exit.
diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c
index b121c6e196..a2d2b95c42 100644
--- a/src/or/circuitbuild.c
+++ b/src/or/circuitbuild.c
@@ -2503,8 +2503,13 @@ choose_random_entry(cpath_build_state_t *state)
* be a long time til we get it. -RD */
r = add_an_entry_guard(NULL, 0);
if (r) {
- smartlist_add(live_entry_guards, r);
entry_guards_changed();
+ /* XXX we start over here in case the new node we added shares
+ * a family with our exit node. There's a chance that we'll just
+ * load up on entry guards here, if the network we're using is
+ * one big family. Perhaps we should teach add_an_entry_guard()
+ * to understand nodes-to-avoid-if-possible? -RD */
+ goto retry;
}
}
if (!r && need_uptime) {