diff options
-rw-r--r-- | changes/bug11750 | 5 | ||||
-rw-r--r-- | src/or/circuitlist.c | 9 |
2 files changed, 13 insertions, 1 deletions
diff --git a/changes/bug11750 b/changes/bug11750 new file mode 100644 index 000000000..f779ac8fe --- /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 90fc93f3a..58fb22d8c 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. */ |