diff --git a/src/util-mpm-ac-ks.c b/src/util-mpm-ac-ks.c index 5e73dfd533..c13ae393b6 100644 --- a/src/util-mpm-ac-ks.c +++ b/src/util-mpm-ac-ks.c @@ -401,7 +401,7 @@ static void SCACTileCreateGotoTable(MpmCtx *mpm_ctx) } } -static inline int SCACTileStateQueueIsEmpty(StateQueue *q) +static inline int SCACStateQueueIsEmpty(StateQueue *q) { if (q->top == q->bot) return 1; @@ -409,7 +409,7 @@ static inline int SCACTileStateQueueIsEmpty(StateQueue *q) return 0; } -static inline void SCACTileEnqueue(StateQueue *q, int32_t state) +static inline void SCACEnqueue(StateQueue *q, int32_t state) { int i = 0; @@ -430,7 +430,7 @@ static inline void SCACTileEnqueue(StateQueue *q, int32_t state) } } -static inline int32_t SCACTileDequeue(StateQueue *q) +static inline int32_t SCACDequeue(StateQueue *q) { if (q->bot == STATE_QUEUE_CONTAINER_SIZE) q->bot = 0; @@ -505,8 +505,10 @@ static void SCACTileCreateFailureTable(MpmCtx *mpm_ctx) int32_t state = 0; int32_t r_state = 0; - StateQueue q; - memset(&q, 0, sizeof(StateQueue)); + StateQueue *q = SCCalloc(1, sizeof(StateQueue)); + if (q == NULL) { + FatalError("Error allocating memory"); + } /* Allocate space for the failure table. A failure entry in the table for * every state(SCACTileCtx->state_count) */ @@ -521,19 +523,19 @@ static void SCACTileCreateFailureTable(MpmCtx *mpm_ctx) for (aa = 0; aa < ctx->alphabet_size; aa++) { int32_t temp_state = ctx->goto_table[0][aa]; if (temp_state != 0) { - SCACTileEnqueue(&q, temp_state); + SCACEnqueue(q, temp_state); ctx->failure_table[temp_state] = 0; } } - while (!SCACTileStateQueueIsEmpty(&q)) { + while (!SCACStateQueueIsEmpty(q)) { /* pick up every state from the queue and add failure transitions */ - r_state = SCACTileDequeue(&q); + r_state = SCACDequeue(q); for (aa = 0; aa < ctx->alphabet_size; aa++) { int32_t temp_state = ctx->goto_table[r_state][aa]; if (temp_state == SC_AC_TILE_FAIL) continue; - SCACTileEnqueue(&q, temp_state); + SCACEnqueue(q, temp_state); state = ctx->failure_table[r_state]; while(ctx->goto_table[state][aa] == SC_AC_TILE_FAIL) @@ -543,6 +545,7 @@ static void SCACTileCreateFailureTable(MpmCtx *mpm_ctx) mpm_ctx); } } + SCFree(q); } /* @@ -676,28 +679,31 @@ static inline void SCACTileCreateDeltaTable(MpmCtx *mpm_ctx) ctx->alphabet_storage = 256; /* Change? */ } - StateQueue q; - memset(&q, 0, sizeof(StateQueue)); + StateQueue *q = SCCalloc(1, sizeof(StateQueue)); + if (q == NULL) { + FatalError("Error allocating memory"); + } for (aa = 0; aa < ctx->alphabet_size; aa++) { int temp_state = ctx->goto_table[0][aa]; if (temp_state != 0) - SCACTileEnqueue(&q, temp_state); + SCACEnqueue(q, temp_state); } - while (!SCACTileStateQueueIsEmpty(&q)) { - r_state = SCACTileDequeue(&q); + while (!SCACStateQueueIsEmpty(q)) { + r_state = SCACDequeue(q); for (aa = 0; aa < ctx->alphabet_size; aa++) { int temp_state = ctx->goto_table[r_state][aa]; if (temp_state != SC_AC_TILE_FAIL) { - SCACTileEnqueue(&q, temp_state); + SCACEnqueue(q, temp_state); } else { int f_state = ctx->failure_table[r_state]; ctx->goto_table[r_state][aa] = ctx->goto_table[f_state][aa]; } } } + SCFree(q); } static void SCACTileClubOutputStatePresenceWithDeltaTable(MpmCtx *mpm_ctx)