From 8c918a4bea18e557e4854a7eb9118b8b79a5ceee Mon Sep 17 00:00:00 2001 From: Victor Julien Date: Wed, 27 Jun 2018 22:17:34 +0200 Subject: [PATCH] detect/multi-tenant: fix mix of default detect engine and tenants --- src/detect-engine.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/detect-engine.c b/src/detect-engine.c index 1747695e88..f3b0c38cf1 100644 --- a/src/detect-engine.c +++ b/src/detect-engine.c @@ -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)