]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Use siphash on channel/circuit-id map too
authorNick Mathewson <nickm@torproject.org>
Mon, 5 May 2014 16:13:33 +0000 (12:13 -0400)
committerNick Mathewson <nickm@torproject.org>
Mon, 5 May 2014 16:13:58 +0000 (12:13 -0400)
Fixes ticket 11750.

changes/bug11750 [new file with mode: 0644]
src/or/circuitlist.c

diff --git a/changes/bug11750 b/changes/bug11750
new file mode 100644 (file)
index 0000000..f779ac8
--- /dev/null
@@ -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.
index 90fc93f3a875923d3c267f277d5c703680920bde..58fb22d8ce4491abf610c97ba3726c0abcd077bd 100644 (file)
@@ -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. */