diff options
author | Nick Mathewson <nickm@torproject.org> | 2017-03-07 14:12:53 -0500 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2017-03-16 14:40:33 -0400 |
commit | 653c6d129efc93899ffb447d99ecee98dd7ab373 (patch) | |
tree | 82f9b8b850782aa4008ac9c08c63a766bd3ea1d6 /src/or | |
parent | 6a36e5ff3b7233e430ce8b1ec567d3235ff04999 (diff) | |
download | tor-653c6d129efc93899ffb447d99ecee98dd7ab373.tar.gz tor-653c6d129efc93899ffb447d99ecee98dd7ab373.zip |
Make consensus diff sha3 operations mockable.
(We'll want this for fuzzing)
Diffstat (limited to 'src/or')
-rw-r--r-- | src/or/consdiff.c | 16 | ||||
-rw-r--r-- | src/or/consdiff.h | 9 |
2 files changed, 19 insertions, 6 deletions
diff --git a/src/or/consdiff.c b/src/or/consdiff.c index 3266abd64f..16933deb89 100644 --- a/src/or/consdiff.c +++ b/src/or/consdiff.c @@ -51,6 +51,14 @@ consensus_compute_digest,(const char *cons, return r; } +/** DOCDOC */ +MOCK_IMPL(STATIC int, +consensus_digest_eq,(const uint8_t *d1, + const uint8_t *d2)) +{ + return fast_memeq(d1, d2, DIGEST256_LEN); +} + /** Create (allocate) a new slice from a smartlist. Assumes that the start * and the end indexes are within the bounds of the initial smartlist. The end * element is not part of the resulting slice. If end is -1, the slice is to @@ -965,8 +973,8 @@ consdiff_apply_diff(const smartlist_t *cons1, } /* See that the consensus that was given to us matches its hash. */ - if (fast_memneq(digests1->sha3_256, e_cons1_hash, - DIGEST256_LEN)) { + if (!consensus_digest_eq(digests1->sha3_256, + (const uint8_t*)e_cons1_hash)) { char hex_digest1[HEX_DIGEST256_LEN+1]; char e_hex_digest1[HEX_DIGEST256_LEN+1]; log_warn(LD_CONSDIFF, "Refusing to apply consensus diff because " @@ -1002,8 +1010,8 @@ consdiff_apply_diff(const smartlist_t *cons1, } /* See that the resulting consensus matches its hash. */ - if (fast_memneq(cons2_digests.sha3_256, e_cons2_hash, - DIGEST256_LEN)) { + if (!consensus_digest_eq(cons2_digests.sha3_256, + (const uint8_t*)e_cons2_hash)) { log_warn(LD_CONSDIFF, "Refusing to apply consensus diff because " "the resulting consensus doesn't match the digest as found in " "the consensus diff header."); diff --git a/src/or/consdiff.h b/src/or/consdiff.h index eef3653f69..7797067f32 100644 --- a/src/or/consdiff.h +++ b/src/or/consdiff.h @@ -62,8 +62,13 @@ STATIC int smartlist_slice_string_pos(const smartlist_slice_t *slice, STATIC void set_changed(bitarray_t *changed1, bitarray_t *changed2, const smartlist_slice_t *slice1, const smartlist_slice_t *slice2); -STATIC int consensus_compute_digest(const char *cons, - consensus_digest_t *digest_out); + +MOCK_DECL(STATIC int, + consensus_compute_digest,(const char *cons, + consensus_digest_t *digest_out)); +MOCK_DECL(STATIC int, + consensus_digest_eq,(const uint8_t *d1, + const uint8_t *d2)); #endif #endif |