[tor-commits] [tor] 02/08: Fix logic for whether a channel's Ed25519 ID is changing

gitolite role git at cupani.torproject.org
Wed Jan 11 14:04:46 UTC 2023


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

dgoulet pushed a commit to branch main
in repository tor.

commit a79046f40a515473ece5eb74aa72f82511571fe0
Author: Nick Mathewson <nickm at torproject.org>
AuthorDate: Tue Mar 1 11:53:10 2022 -0500

    Fix logic for whether a channel's Ed25519 ID is changing
    
    The previous code would notice if we were changing from one identity
    to another, but not if we were changing from no identity to having
    an identity.  This problem caused a bug (spotted by cypherpunks in
    ticket #40563) where if we created a channel for a circuit request
    that doesn't include an Ed25519 identity, we won't be able to use
    that channel later for requests that _do_ list Ed25519.
    
    Fix for 40563; bugfix on 0.3.0.1-alpha.
---
 src/core/or/connection_or.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/core/or/connection_or.c b/src/core/or/connection_or.c
index a6f73d328a..069ee1d571 100644
--- a/src/core/or/connection_or.c
+++ b/src/core/or/connection_or.c
@@ -179,8 +179,9 @@ connection_or_set_identity_digest(or_connection_t *conn,
     chan && !ed25519_public_key_is_zero(&chan->ed25519_identity);
   const int rsa_changed =
     tor_memneq(conn->identity_digest, rsa_digest, DIGEST_LEN);
-  const int ed_changed = ed_id_was_set &&
-    (!ed_id || !ed25519_pubkey_eq(ed_id, &chan->ed25519_identity));
+  const int ed_changed = (!ed_id_was_set && ed_id) ||
+    (ed_id_was_set && ed_id && chan &&
+     !ed25519_pubkey_eq(ed_id, &chan->ed25519_identity));
 
   if (BUG(rsa_changed && rsa_id_was_set))
     return;

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


More information about the tor-commits mailing list