[tor-commits] [tor] 01/03: make L2 vanguards actually independent

gitolite role git at cupani.torproject.org
Wed Aug 10 12:56:36 UTC 2022


This is an automated email from the git hooks/post-receive script.

dgoulet pushed a commit to branch main
in repository tor.

commit 7b1fffe0ddfb78234bddba4aae5800482d8b01fb
Author: Roger Dingledine <arma at torproject.org>
AuthorDate: Thu Jul 7 01:16:53 2022 -0400

    make L2 vanguards actually independent
    
    We had omitted some checks for whether our vanguards (second layer
    guards from proposal 333) overlapped or came from the same family.
    Now make sure to pick each of them to be independent.
    
    Fixes bug 40639; bugfix on 0.4.7.1-alpha.
---
 changes/bug40639                |  5 +++++
 src/feature/client/entrynodes.c | 10 +++++++++-
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/changes/bug40639 b/changes/bug40639
new file mode 100644
index 0000000000..d5ab2e0cb3
--- /dev/null
+++ b/changes/bug40639
@@ -0,0 +1,5 @@
+  o Major bugfixes (vanguards):
+    - We had omitted some checks for whether our vanguards (second layer
+      guards from proposal 333) overlapped or came from the same family.
+      Now make sure to pick each of them to be independent. Fixes bug
+      40639; bugfix on 0.4.7.1-alpha.
diff --git a/src/feature/client/entrynodes.c b/src/feature/client/entrynodes.c
index 15f29d1c3e..493571173e 100644
--- a/src/feature/client/entrynodes.c
+++ b/src/feature/client/entrynodes.c
@@ -4136,8 +4136,16 @@ maintain_layer2_guards(void)
   log_info(LD_GENERAL, "Adding %d guards to Layer2 routerset",
            new_guards_needed_n);
 
-  /* Add required guards to the list */
+  /* First gather the exclusions based on our current L2 guards */
   smartlist_t *excluded = smartlist_new();
+  SMARTLIST_FOREACH_BEGIN(layer2_guards, layer2_guard_t *, g) {
+    /* Exclude existing L2 guard + family so that we don't double-pick. */
+    const node_t *existing = node_get_by_id(g->identity);
+    if (existing)
+      nodelist_add_node_and_family(excluded, existing);
+  } SMARTLIST_FOREACH_END(g);
+
+  /* Add required guards to the list */
   for (int i = 0; i < new_guards_needed_n; i++) {
     const node_t *choice = NULL;
     const or_options_t *options = get_options();

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the tor-commits mailing list