detect: allow det_ctx->de_ctx to be NULL

When freeing det_ctx, allow de_ctx to be NULL.
pull/1389/head
Victor Julien 11 years ago
parent c9a8262ccf
commit a80cc696d7

@ -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;

Loading…
Cancel
Save