From: Victor Julien Date: Wed, 27 Jun 2018 20:17:34 +0000 (+0200) Subject: detect/multi-tenant: fix mix of default detect engine and tenants X-Git-Tag: suricata-4.1.0-rc1~32 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8c918a4bea18e557e4854a7eb9118b8b79a5ceee;p=thirdparty%2Fsuricata.git detect/multi-tenant: fix mix of default detect engine and tenants --- 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)