Use siphash on channel/circuit-id map too

Fixes ticket 11750.
This commit is contained in:
Nick Mathewson 2014-05-05 12:13:33 -04:00
parent 388478561d
commit 8127f4db30
2 changed files with 13 additions and 1 deletions

5
changes/bug11750 Normal file
View File

@ -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.

View 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. */