From a80cc696d73a9ec71556c2e49f1e7789b57dcdfc Mon Sep 17 00:00:00 2001 From: Victor Julien Date: Thu, 29 Jan 2015 11:16:49 +0100 Subject: [PATCH] detect: allow det_ctx->de_ctx to be NULL When freeing det_ctx, allow de_ctx to be NULL. --- src/detect-engine.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/detect-engine.c b/src/detect-engine.c index 6b86384e60..e42e896174 100644 --- a/src/detect-engine.c +++ b/src/detect-engine.c @@ -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;