[tor-commits] [tor/master] Use digest256_len in networkstatus_copy_old_consensus_info()

nickm at torproject.org nickm at torproject.org
Sat Nov 1 21:05:31 UTC 2014


commit efd5001c3b94c633850d7ae9b9f5b6e1ee45ab4e
Author: Nick Mathewson <nickm at torproject.org>
Date:   Fri Oct 31 11:36:31 2014 -0400

    Use digest256_len in networkstatus_copy_old_consensus_info()
    
    Now, if a router ever changes its microdescriptor, but the new
    microdescriptor SHA256 hash has the same 160-bit prefix as the old
    one, we treat it as a new microdescriptor when deciding whether to
    copy status information.
    
    (This function also is used to compare SHA1 digests of router
    descriptors, but don't worry: the descriptor_digest field either holds
    a SHA256 hash, or a SHA1 hash padded with 0 bytes.)
---
 changes/bug13399       |    5 +++++
 src/or/networkstatus.c |    2 +-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/changes/bug13399 b/changes/bug13399
index bbd0b23..fcaf58a 100644
--- a/changes/bug13399
+++ b/changes/bug13399
@@ -5,3 +5,8 @@
       the same first 160 bits. Fixes part of bug 13399; bugfix on
       0.2.3.1-alpha.
 
+    - Reset a router's status if its microdescriptor digest changes,
+      even if the first 160 bits remain the same.  Fixes part of bug
+      13399; bugfix on 0.2.3.1-alpha.
+
+
diff --git a/src/or/networkstatus.c b/src/or/networkstatus.c
index 351b20c..21efdd1 100644
--- a/src/or/networkstatus.c
+++ b/src/or/networkstatus.c
@@ -1123,7 +1123,7 @@ networkstatus_copy_old_consensus_info(networkstatus_t *new_c,
     rs_new->last_dir_503_at = rs_old->last_dir_503_at;
 
     if (tor_memeq(rs_old->descriptor_digest, rs_new->descriptor_digest,
-                  DIGEST_LEN)) { /* XXXX Change this to digest256_len */
+                  DIGEST256_LEN)) {
       /* And the same descriptor too! */
       memcpy(&rs_new->dl_status, &rs_old->dl_status,sizeof(download_status_t));
     }





More information about the tor-commits mailing list