]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
detect: allow det_ctx->de_ctx to be NULL
authorVictor Julien <victor@inliniac.net>
Thu, 29 Jan 2015 10:16:49 +0000 (11:16 +0100)
committerVictor Julien <victor@inliniac.net>
Thu, 19 Mar 2015 16:52:32 +0000 (17:52 +0100)
When freeing det_ctx, allow de_ctx to be NULL.

src/detect-engine.c

index 6b86384e60e1c118b3cef5601573872cf2ce0137..e42e8961747256f3cfae169ee2a305ab206cefbe 100644 (file)
@@ -1357,9 +1357,11 @@ TmEcode DetectEngineThreadCtxDeinit(ThreadVars *tv, void *data)
     DetectEngineIPOnlyThreadDeinit(&det_ctx->io_ctx);
 
     /** \todo get rid of this static */
-    PatternMatchThreadDestroy(&det_ctx->mtc, det_ctx->de_ctx->mpm_matcher);
-    PatternMatchThreadDestroy(&det_ctx->mtcs, det_ctx->de_ctx->mpm_matcher);
-    PatternMatchThreadDestroy(&det_ctx->mtcu, det_ctx->de_ctx->mpm_matcher);
+    if (det_ctx->de_ctx != NULL) {
+        PatternMatchThreadDestroy(&det_ctx->mtc, det_ctx->de_ctx->mpm_matcher);
+        PatternMatchThreadDestroy(&det_ctx->mtcs, det_ctx->de_ctx->mpm_matcher);
+        PatternMatchThreadDestroy(&det_ctx->mtcu, det_ctx->de_ctx->mpm_matcher);
+    }
 
     PmqFree(&det_ctx->pmq);
     int i;
@@ -1411,13 +1413,15 @@ TmEcode DetectEngineThreadCtxDeinit(ThreadVars *tv, void *data)
         SCFree(det_ctx->hcbd);
     }
 
-    DetectEngineThreadCtxDeinitKeywords(det_ctx->de_ctx, det_ctx);
+    if (det_ctx->de_ctx != NULL) {
+        DetectEngineThreadCtxDeinitKeywords(det_ctx->de_ctx, det_ctx);
 #ifdef UNITTESTS
-    if (!RunmodeIsUnittests() || det_ctx->de_ctx->ref_cnt > 0)
-        DetectEngineDeReference(&det_ctx->de_ctx);
+        if (!RunmodeIsUnittests() || det_ctx->de_ctx->ref_cnt > 0)
+            DetectEngineDeReference(&det_ctx->de_ctx);
 #else
-    DetectEngineDeReference(&det_ctx->de_ctx);
+        DetectEngineDeReference(&det_ctx->de_ctx);
 #endif
+    }
     SCFree(det_ctx);
 
     return TM_ECODE_OK;