From: Anoop Saldanha Date: Fri, 12 Apr 2013 07:48:17 +0000 (+0530) Subject: hsbd mpm and packet mpm share same mpm ctx id. X-Git-Tag: suricata-2.0beta1~143 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6dcde9d7e9df4930693da71349369b56b62af8b4;p=thirdparty%2Fsuricata.git hsbd mpm and packet mpm share same mpm ctx id. This is a bug emanating from we having a var reference for hsbd mpm, but failing to initialize it, and we default to using the packet mpm. --- diff --git a/src/detect.c b/src/detect.c index 33033bd3bd..04317b4d0d 100644 --- a/src/detect.c +++ b/src/detect.c @@ -2394,6 +2394,9 @@ static void SigInitStandardMpmFactoryContexts(DetectEngineCtx *de_ctx) de_ctx->sgh_mpm_context_hcbd = MpmFactoryRegisterMpmCtxProfile(de_ctx, "hcbd", MPM_CTX_FACTORY_FLAGS_PREPARE_WITH_SIG_GROUP_BUILD); + de_ctx->sgh_mpm_context_hsbd = + MpmFactoryRegisterMpmCtxProfile(de_ctx, "hsbd", + MPM_CTX_FACTORY_FLAGS_PREPARE_WITH_SIG_GROUP_BUILD); de_ctx->sgh_mpm_context_hhd = MpmFactoryRegisterMpmCtxProfile(de_ctx, "hhd", MPM_CTX_FACTORY_FLAGS_PREPARE_WITH_SIG_GROUP_BUILD); @@ -4512,6 +4515,16 @@ int SigGroupBuild(DetectEngineCtx *de_ctx) } //printf("hcbd- %d\n", mpm_ctx->pattern_cnt); + mpm_ctx = MpmFactoryGetMpmCtxForProfile(de_ctx, de_ctx->sgh_mpm_context_hsbd, 0); + if (mpm_table[de_ctx->mpm_matcher].Prepare != NULL) { + mpm_table[de_ctx->mpm_matcher].Prepare(mpm_ctx); + } + mpm_ctx = MpmFactoryGetMpmCtxForProfile(de_ctx, de_ctx->sgh_mpm_context_hsbd, 1); + if (mpm_table[de_ctx->mpm_matcher].Prepare != NULL) { + mpm_table[de_ctx->mpm_matcher].Prepare(mpm_ctx); + } + //printf("hsbd- %d\n", mpm_ctx->pattern_cnt); + mpm_ctx = MpmFactoryGetMpmCtxForProfile(de_ctx, de_ctx->sgh_mpm_context_hhd, 0); if (mpm_table[de_ctx->mpm_matcher].Prepare != NULL) { mpm_table[de_ctx->mpm_matcher].Prepare(mpm_ctx);