]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
detect: clean up sgh's at detect engine free
authorVictor Julien <victor@inliniac.net>
Mon, 12 Oct 2015 18:05:42 +0000 (20:05 +0200)
committerVictor Julien <victor@inliniac.net>
Tue, 5 Apr 2016 07:30:11 +0000 (09:30 +0200)
src/detect.c

index 64c14025be8ae0c4eb2e78add3151f3fe88c124d..475bbbb5a46e45a5c3fef141a9dce430e1787335 100644 (file)
@@ -3943,6 +3943,19 @@ int SigAddressCleanupStage1(DetectEngineCtx *de_ctx)
         de_ctx->flow_gh[f].udp = NULL;
     }
 
+    uint32_t idx;
+    for (idx = 0; idx < de_ctx->sgh_array_cnt; idx++) {
+        SigGroupHead *sgh = de_ctx->sgh_array[idx];
+        if (sgh == NULL)
+            continue;
+
+        SCLogDebug("sgh %p", sgh);
+        SigGroupHeadFree(sgh);
+    }
+    SCFree(de_ctx->sgh_array);
+    de_ctx->sgh_array = NULL;
+    de_ctx->sgh_array_cnt = 0;
+    de_ctx->sgh_array_size = 0;
 
     IPOnlyDeinit(de_ctx, &de_ctx->io_ctx);
 
@@ -4019,6 +4032,8 @@ int SigAddressPrepareStage4(DetectEngineCtx *de_ctx)
         if (sgh == NULL)
             continue;
 
+        SCLogDebug("sgh %p", sgh);
+
         SigGroupHeadSetFilemagicFlag(de_ctx, sgh);
         SigGroupHeadSetFileMd5Flag(de_ctx, sgh);
         SigGroupHeadSetFilesizeFlag(de_ctx, sgh);
@@ -4051,10 +4066,6 @@ int SigAddressPrepareStage4(DetectEngineCtx *de_ctx)
     SigGroupHeadHashFree(de_ctx);
     SigGroupHeadDPortHashFree(de_ctx);
 
-    SCFree(de_ctx->sgh_array);
-    de_ctx->sgh_array_cnt = 0;
-    de_ctx->sgh_array_size = 0;
-
     RulesDumpGrouping(de_ctx);
 
     SCReturnInt(0);