From: Philippe Antoine Date: Thu, 18 Feb 2021 10:44:24 +0000 (+0100) Subject: util: export Djb2 hash string function X-Git-Tag: suricata-6.0.5~69 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=42e47decf925e2d9545c59a9ff7db5c91f4c7512;p=thirdparty%2Fsuricata.git util: export Djb2 hash string function (cherry picked from commit 5cb996efcf2248a6a04abfe2bde1dc5115bdfac2) --- diff --git a/src/util-hash-string.c b/src/util-hash-string.c index ceb1b301a3..923cdde85c 100644 --- a/src/util-hash-string.c +++ b/src/util-hash-string.c @@ -19,19 +19,22 @@ #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) { diff --git a/src/util-hash-string.h b/src/util-hash-string.h index 263b738d75..a08874b19f 100644 --- a/src/util-hash-string.h +++ b/src/util-hash-string.h @@ -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);