Commit efd5001c authored by Nick Mathewson's avatar Nick Mathewson 🥔
Browse files

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.)
parent dc05b854
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -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.

+1 −1
Original line number Diff line number Diff line
@@ -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));
    }