]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
detect: extend PrefilterPacketHeaderValue to 16 bytes
authorPhilippe Antoine <contact@catenacyber.fr>
Fri, 6 Mar 2020 08:54:25 +0000 (09:54 +0100)
committerVictor Julien <victor@inliniac.net>
Thu, 19 Mar 2020 08:29:26 +0000 (09:29 +0100)
src/detect-engine-prefilter-common.c
src/detect-engine-prefilter-common.h

index 4c9e4f5e03e9d1e745707ffde75b51a69e7aa798..323f479f5ba4de1bc058f2d49f8c4ca4411d416e 100644 (file)
@@ -31,7 +31,7 @@ typedef struct PrefilterPacketHeaderHashCtx_ {
 static uint32_t PrefilterPacketHeaderHashFunc(HashListTable *ht, void *data, uint16_t datalen)
 {
     PrefilterPacketHeaderCtx *ctx = data;
-    uint64_t hash = ctx->v1.u64 + ctx->type + ctx->value;
+    uint64_t hash = ctx->v1.u64[0] + ctx->v1.u64[1] + ctx->type + ctx->value;
     hash %= ht->array_size;
     return hash;
 }
@@ -41,7 +41,8 @@ static char PrefilterPacketHeaderCompareFunc(void *data1, uint16_t len1,
 {
     PrefilterPacketHeaderHashCtx *ctx1 = data1;
     PrefilterPacketHeaderHashCtx *ctx2 = data2;
-    return (ctx1->v1.u64 == ctx2->v1.u64 &&
+    return (ctx1->v1.u64[0] == ctx2->v1.u64[0] &&
+            ctx1->v1.u64[1] == ctx2->v1.u64[1] &&
             ctx1->type == ctx2->type &&
             ctx1->value == ctx2->value);
 }
index b8f317f14801cb0d93dd3994c13aaec9e065c7ac..b2bd461e2e3692d843a978a00bc304a9acdf13a9 100644 (file)
 #define __DETECT_ENGINE_PREFILTER_COMMON_H__
 
 typedef union {
-    uint8_t u8[8];
-    uint16_t u16[4];
-    uint32_t u32[2];
-    uint64_t u64;
+    uint8_t u8[16];
+    uint16_t u16[8];
+    uint32_t u32[4];
+    uint64_t u64[2];
 } PrefilterPacketHeaderValue;
 
 #define PREFILTER_EXTRA_MATCH_UNUSED  0