diff --git a/changes/bug11750 b/changes/bug11750 new file mode 100644 index 0000000000..f779ac8fe0 --- /dev/null +++ b/changes/bug11750 @@ -0,0 +1,5 @@ + o Minor features (security): + - Apply the secure SipHash-2-4 function to the hash table mapping + circuit IDs and channels to circuits. We missed this one when we + were converting all the other hash functions to use SipHash back + in 0.2.5.3-alpha. Resolves ticket 11750. diff --git a/src/or/circuitlist.c b/src/or/circuitlist.c index 90fc93f3a8..58fb22d8ce 100644 --- a/src/or/circuitlist.c +++ b/src/or/circuitlist.c @@ -76,7 +76,14 @@ chan_circid_entries_eq_(chan_circid_circuit_map_t *a, static INLINE unsigned int chan_circid_entry_hash_(chan_circid_circuit_map_t *a) { - return ((unsigned)a->circ_id) ^ (unsigned)(uintptr_t)(a->chan); + struct { + void *chan; + circid_t circid; + } s; + memset(&s, 0, sizeof(s)); + s.chan = a->chan; + s.circid = a->circ_id; + return (unsigned) siphash24g(&s, sizeof(s)); } /** Map from [chan,circid] to circuit. */