]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
detect/multi-tenant: fix mix of default detect engine and tenants
authorVictor Julien <victor@inliniac.net>
Wed, 27 Jun 2018 20:17:34 +0000 (22:17 +0200)
committerVictor Julien <victor@inliniac.net>
Thu, 28 Jun 2018 09:08:07 +0000 (11:08 +0200)
src/detect-engine.c

index 1747695e88ab9da730ef2ad7f8e09cb65243cfce..f3b0c38cf187a75519032e169bec8f4b913a4b7e 100644 (file)
@@ -2685,15 +2685,19 @@ DetectEngineCtx *DetectEngineGetCurrent(void)
     DetectEngineMasterCtx *master = &g_master_de_ctx;
     SCMutexLock(&master->lock);
 
-    if (master->list == NULL) {
-        SCMutexUnlock(&master->lock);
-        return NULL;
+    DetectEngineCtx *de_ctx = master->list;
+    while (de_ctx) {
+        if (de_ctx->type == DETECT_ENGINE_TYPE_NORMAL || de_ctx->type == DETECT_ENGINE_TYPE_STUB) {
+            de_ctx->ref_cnt++;
+            SCLogDebug("de_ctx %p ref_cnt %u", de_ctx, de_ctx->ref_cnt);
+            SCMutexUnlock(&master->lock);
+            return de_ctx;
+        }
+        de_ctx = de_ctx->next;
     }
 
-    master->list->ref_cnt++;
-    SCLogDebug("master->list %p ref_cnt %u", master->list, master->list->ref_cnt);
     SCMutexUnlock(&master->lock);
-    return master->list;
+    return NULL;
 }
 
 DetectEngineCtx *DetectEngineReference(DetectEngineCtx *de_ctx)