aboutsummaryrefslogtreecommitdiff
path: root/src/or
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2012-05-24 12:39:26 -0400
committerNick Mathewson <nickm@torproject.org>2012-05-24 12:39:26 -0400
commit281a5e4670bfd4d687f58cf9999666a4d097e35e (patch)
tree94a54235c332e3b48b9651d6893106f1a5a37317 /src/or
parent75fc4dbbcabaedc715f0f9e883ccab1c9634e787 (diff)
downloadtor-281a5e4670bfd4d687f58cf9999666a4d097e35e.tar
tor-281a5e4670bfd4d687f58cf9999666a4d097e35e.tar.gz
Warn and ignore the MyFamily setting if BridgeRelay is also set
Roger explains at http://archives.seul.org/tor/talk/Nov-2011/msg00209.html : "If you list your bridge as part of your family in the relay descriptor, then everybody can learn your bridge fingerprint, and they can look up your bridge's descriptor (and thus location) at the bridge directory authority." Now, we can't stop relays from listing bridges, but we can warn when we notice a bridge listing anybody, which might help some. This fixes bug 4657; it's a fix on 0.2.0.3-alpha, where bridges were first introduced.
Diffstat (limited to 'src/or')
-rw-r--r--src/or/config.c6
-rw-r--r--src/or/router.c2
2 files changed, 7 insertions, 1 deletions
diff --git a/src/or/config.c b/src/or/config.c
index 090aba1c7..58c76b4fb 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -3601,6 +3601,12 @@ options_validate(or_options_t *old_options, or_options_t *options,
if (options->UseEntryGuards && ! options->NumEntryGuards)
REJECT("Cannot enable UseEntryGuards with NumEntryGuards set to 0");
+ if (options->MyFamily && options->BridgeRelay) {
+ log_warn(LD_CONFIG, "Listing a family for a bridge relay is not "
+ "supported: it can reveal bridge fingerprints to censors. "
+ "You should also make sure you aren't listing this bridge's "
+ "fingerprint in any other MyFamily.");
+ }
if (check_nickname_list(options->MyFamily, "MyFamily", msg))
return -1;
for (cl = options->NodeFamilies; cl; cl = cl->next) {
diff --git a/src/or/router.c b/src/or/router.c
index 365e888af..191944815 100644
--- a/src/or/router.c
+++ b/src/or/router.c
@@ -1483,7 +1483,7 @@ router_rebuild_descriptor(int force)
}
if (authdir_mode(options))
ri->is_valid = ri->is_named = 1; /* believe in yourself */
- if (options->MyFamily) {
+ if (options->MyFamily && ! options->BridgeRelay) {
smartlist_t *family;
if (!warned_nonexistent_family)
warned_nonexistent_family = smartlist_create();