]> git.ipfire.org Git - people/ms/suricata.git/commitdiff
util: export Djb2 hash string function
authorPhilippe Antoine <contact@catenacyber.fr>
Thu, 18 Feb 2021 10:44:24 +0000 (11:44 +0100)
committerPhilippe Antoine <contact@catenacyber.fr>
Fri, 24 Sep 2021 13:22:09 +0000 (15:22 +0200)
src/util-hash-string.c
src/util-hash-string.h

index ceb1b301a303c7698ac63c81f47b45c9e2dbb57c..923cdde85caa39aebec8d3294b7e4d15b4283e50 100644 (file)
 #include "util-hash-string.h"
 
 /* djb2 string hashing */
-uint32_t StringHashFunc(HashTable *ht, void *data, uint16_t datalen)
+uint32_t StringHashDjb2(uint8_t *data, uint32_t datalen)
 {
     uint32_t hash = 5381;
-    int c;
-
-    while ((c = *(char *)data++))
+    for (uint32_t i = 0; i < datalen; i++) {
+        uint32_t c = data[i];
         hash = ((hash << 5) + hash) + c; /* hash * 33 + c */
-
-    hash = hash % ht->array_size;
-
+    }
     return hash;
 }
 
+/* djb2 string hashing */
+uint32_t StringHashFunc(HashTable *ht, void *data, uint16_t datalen)
+{
+    return StringHashDjb2(data, datalen) % ht->array_size;
+}
+
 char StringHashCompareFunc(void *data1, uint16_t datalen1,
                            void *data2, uint16_t datalen2)
 {
index 263b738d7529edf207bd452d131483be9e3a9311..a08874b19fd8820bad5ca0f67dd1348f6e5c785b 100644 (file)
@@ -18,6 +18,7 @@
 #ifndef __UTIL_HASH_STRING_H__
 #define __UTIL_HASH_STRING_H__
 
+uint32_t StringHashDjb2(uint8_t *data, uint32_t datalen);
 uint32_t StringHashFunc(HashTable *ht, void *data, uint16_t datalen);
 char StringHashCompareFunc(void *data1, uint16_t datalen1,
                            void *data2, uint16_t datalen2);