summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2016-05-17 12:57:03 -0400
committerNick Mathewson <nickm@torproject.org>2016-05-17 12:57:03 -0400
commit7d1eb0d57086c9630f7797916d9d2c948117a7e1 (patch)
tree79c1ee205ae3f4ace9f00a55307b6e076344863e /src
parent44da47d3c1e4809d5aaf91cd708c6f02b01a5396 (diff)
downloadtor-7d1eb0d57086c9630f7797916d9d2c948117a7e1.tar.gz
tor-7d1eb0d57086c9630f7797916d9d2c948117a7e1.zip
When making sure digest256 matches in ei, look at sd, not ri.
The routerinfo we pass to routerinfo_incompatible_with_extrainfo is the latest routerinfo for the relay. The signed_descriptor_t, on the other hand, is the signed_descriptor_t that corresponds to the extrainfo. That means we should be checking the digest256 match with that signed_descriptor_t, not with the routerinfo. Fixes bug 17150 (and 19017); bugfix on 0.2.7.2-alpha.
Diffstat (limited to 'src')
-rw-r--r--src/or/routerlist.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/or/routerlist.c b/src/or/routerlist.c
index 3d85d86f20..2e347b0692 100644
--- a/src/or/routerlist.c
+++ b/src/or/routerlist.c
@@ -4926,9 +4926,9 @@ routerinfo_incompatible_with_extrainfo(const routerinfo_t *ri,
/* Set digest256_matches to 1 if the digest is correct, or if no
* digest256 was in the ri. */
digest256_matches = tor_memeq(ei->digest256,
- ri->cache_info.extra_info_digest256, DIGEST256_LEN);
+ sd->extra_info_digest256, DIGEST256_LEN);
digest256_matches |=
- tor_mem_is_zero(ri->cache_info.extra_info_digest256, DIGEST256_LEN);
+ tor_mem_is_zero(sd->extra_info_digest256, DIGEST256_LEN);
/* The identity must match exactly to have been generated at the same time
* by the same router. */