aboutsummaryrefslogtreecommitdiff
path: root/jim.h
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2012-01-10 09:36:28 +1000
committerSteve Bennett <steveb@workware.net.au>2013-12-21 01:30:19 +1000
commitc9b4ead06ad0a9e66759d279dee5de9991b8dc2f (patch)
tree6e251688d024a9a0075a8633a2f0339915b2f3c2 /jim.h
parent0cbbaaff6a5bfc61640ce6997b203ed23219841c (diff)
downloadjimtcl-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.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/jim.h b/jim.h
index 9f4813d..27e9e92 100644
--- a/jim.h
+++ b/jim.h
@@ -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)