]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
mpm: ac-bs use internal pattern id tracking
authorVictor Julien <victor@inliniac.net>
Mon, 12 Oct 2015 08:41:57 +0000 (10:41 +0200)
committerVictor Julien <victor@inliniac.net>
Tue, 5 Apr 2016 07:30:10 +0000 (09:30 +0200)
src/util-mpm-ac-bs.c
src/util-mpm-ac-bs.h

index 23c37e8d03a28621eec6245a9254a55d773fa818..ade031a4f313d2f7b0cdcd562afb8c8e7ff40801 100644 (file)
@@ -1239,6 +1239,8 @@ int SCACBSPreparePatterns(MpmCtx *mpm_ctx)
     mpm_ctx->memory_cnt--;
     mpm_ctx->memory_size -= (mpm_ctx->pattern_cnt * sizeof(SCACBSPattern *));
 
+    ctx->pattern_id_bitarray_size = (ctx->max_pat_id / 8) + 1;
+
     return 0;
 
 error:
@@ -1434,8 +1436,8 @@ uint32_t SCACBSSearch(const MpmCtx *mpm_ctx, MpmThreadCtx *mpm_thread_ctx,
     /* \todo Change it for stateful MPM.  Supply the state using mpm_thread_ctx */
     SCACBSPatternList *pid_pat_list = ctx->pid_pat_list;
 
-    uint8_t bitarray[pmq->pattern_id_bitarray_size];
-    memset(bitarray, 0, pmq->pattern_id_bitarray_size);
+    uint8_t bitarray[ctx->pattern_id_bitarray_size];
+    memset(bitarray, 0, ctx->pattern_id_bitarray_size);
 
     if (ctx->state_count < 32767) {
         register SC_AC_BS_STATE_TYPE_U16 state = 0;
index ce9c59fc5c2837f435fdd5472eebe020c836d68a..42d254c585a2a376f2ca0cac3d75132f8ed6aab7 100644 (file)
@@ -71,6 +71,9 @@ typedef struct SCACBSCtx_ {
 
     /* no of states used by ac */
     uint32_t state_count;
+
+    uint16_t pattern_id_bitarray_size;
+
     /* the all important memory hungry state_table */
     SC_AC_BS_STATE_TYPE_U16 (*state_table_u16)[256];
     /* the all important memory hungry state_table */