From efd5001c3b94c633850d7ae9b9f5b6e1ee45ab4e Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Fri, 31 Oct 2014 11:36:31 -0400 Subject: [PATCH] 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 bbd0b2376b..fcaf58a53c 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 351b20c3af..21efdd129d 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)); }