aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--changes/bug117505
-rw-r--r--src/or/circuitlist.c9
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. */