From: Victor Julien Date: Mon, 23 Oct 2017 11:27:32 +0000 (+0200) Subject: content inspection: support transforms X-Git-Tag: suricata-4.1.0-beta1~150 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=313661451d29d78f22cdcd7f47dc2c5fe1f89357;p=thirdparty%2Fsuricata.git content inspection: support transforms Make sure content is applied to the transformed version of a buffer. Support content with its modifiers, and also isdataat, pcre, bytetest and bytejump. --- diff --git a/src/detect-bytejump.c b/src/detect-bytejump.c index 6cb70aff9b..31ae9378f7 100644 --- a/src/detect-bytejump.c +++ b/src/detect-bytejump.c @@ -517,6 +517,9 @@ static int DetectBytejumpSetup(DetectEngineCtx *de_ctx, Signature *s, const char int sm_list; if (s->init_data->list != DETECT_SM_LIST_NOTSET) { + if (DetectBufferGetActiveList(de_ctx, s) == -1) + goto error; + sm_list = s->init_data->list; if (data->flags & DETECT_BYTEJUMP_RELATIVE) { diff --git a/src/detect-bytetest.c b/src/detect-bytetest.c index 4dcb3127fe..5573e78665 100644 --- a/src/detect-bytetest.c +++ b/src/detect-bytetest.c @@ -444,6 +444,9 @@ static int DetectBytetestSetup(DetectEngineCtx *de_ctx, Signature *s, const char int sm_list; if (s->init_data->list != DETECT_SM_LIST_NOTSET) { + if (DetectBufferGetActiveList(de_ctx, s) == -1) + goto error; + sm_list = s->init_data->list; if (data->flags & DETECT_BYTETEST_RELATIVE) { diff --git a/src/detect-content.c b/src/detect-content.c index a8d0430014..6eb47aeb99 100644 --- a/src/detect-content.c +++ b/src/detect-content.c @@ -329,6 +329,9 @@ int DetectContentSetup(DetectEngineCtx *de_ctx, Signature *s, const char *conten DetectContentPrint(cd); + if (DetectBufferGetActiveList(de_ctx, s) == -1) + goto error; + int sm_list = s->init_data->list; if (sm_list == DETECT_SM_LIST_NOTSET) { sm_list = DETECT_SM_LIST_PMATCH; diff --git a/src/detect-isdataat.c b/src/detect-isdataat.c index 8cca5571a2..201870e89f 100644 --- a/src/detect-isdataat.c +++ b/src/detect-isdataat.c @@ -217,6 +217,8 @@ int DetectIsdataatSetup (DetectEngineCtx *de_ctx, Signature *s, const char *isda int sm_list; if (s->init_data->list != DETECT_SM_LIST_NOTSET) { + if (DetectBufferGetActiveList(de_ctx, s) == -1) + return -1; sm_list = s->init_data->list; if (idad->flags & ISDATAAT_RELATIVE) { diff --git a/src/detect-pcre.c b/src/detect-pcre.c index 20776ddd1e..d4a4e89d40 100644 --- a/src/detect-pcre.c +++ b/src/detect-pcre.c @@ -827,6 +827,9 @@ static int DetectPcreSetup (DetectEngineCtx *de_ctx, Signature *s, const char *r int sm_list = -1; if (s->init_data->list != DETECT_SM_LIST_NOTSET) { + if (DetectBufferGetActiveList(de_ctx, s) == -1) + goto error; + s->flags |= SIG_FLAG_APPLAYER; sm_list = s->init_data->list; } else {