diff options
author | Steve Bennett <steveb@workware.net.au> | 2012-01-10 09:36:28 +1000 |
---|---|---|
committer | Steve Bennett <steveb@workware.net.au> | 2013-12-21 01:30:19 +1000 |
commit | c9b4ead06ad0a9e66759d279dee5de9991b8dc2f (patch) | |
tree | 6e251688d024a9a0075a8633a2f0339915b2f3c2 /jim.h | |
parent | 0cbbaaff6a5bfc61640ce6997b203ed23219841c (diff) | |
download | jimtcl-c9b4ead06ad0a9e66759d279dee5de9991b8dc2f.zip jimtcl-c9b4ead06ad0a9e66759d279dee5de9991b8dc2f.tar.gz jimtcl-c9b4ead06ad0a9e66759d279dee5de9991b8dc2f.tar.bz2 |
allow hash tables to be randomise
To avoid hash table collision attacks (n.runs-SA-2011.004)
Note that this options is *off* by default, but it is reasonable
to consider reversing this.
Signed-off-by: Steve Bennett <steveb@workware.net.au>
Diffstat (limited to 'jim.h')
-rw-r--r-- | jim.h | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -217,6 +217,7 @@ typedef struct Jim_HashTable { unsigned int sizemask; unsigned int used; unsigned int collisions; + unsigned int uniq; void *privdata; } Jim_HashTable; @@ -257,7 +258,7 @@ typedef struct Jim_HashTableIterator { (ht)->type->keyCompare((ht)->privdata, key1, key2) : \ (key1) == (key2)) -#define Jim_HashKey(ht, key) (ht)->type->hashFunction(key) +#define Jim_HashKey(ht, key) ((ht)->type->hashFunction(key) + (ht)->uniq) #define Jim_GetHashEntryKey(he) ((he)->key) #define Jim_GetHashEntryVal(he) ((he)->val) |