FAIL_IF(s->alproto != ALPROTO_UNKNOWN);
FAIL_IF(s->flags & SIG_FLAG_APPLAYER);
- FAIL_IF_NOT(s->sm_lists[DETECT_SM_LIST_AMATCH] == NULL);
FAIL_IF_NULL(s->sm_lists[DETECT_SM_LIST_MATCH]);
FAIL_IF_NULL(s->sm_lists[DETECT_SM_LIST_MATCH]->ctx);
FAIL_IF(s->alproto != ALPROTO_UNKNOWN);
FAIL_IF(s->flags & SIG_FLAG_APPLAYER);
- FAIL_IF_NOT(s->sm_lists[DETECT_SM_LIST_AMATCH] == NULL);
FAIL_IF_NULL(s->sm_lists[DETECT_SM_LIST_MATCH]);
FAIL_IF_NULL(s->sm_lists[DETECT_SM_LIST_MATCH]->ctx);
Signature *s = DetectEngineAppendSig(de_ctx,
"alert tcp any any -> any any (dce_stub_data; content:\"1\"; sid:1;)");
FAIL_IF_NULL(s);
- FAIL_IF_NOT_NULL(s->sm_lists[DETECT_SM_LIST_AMATCH]);
FAIL_IF_NULL(s->sm_lists[DETECT_SM_LIST_DMATCH]);
DetectEngineCtxFree(de_ctx);
PASS;
case DETECT_SM_LIST_PMATCH:
return "packet/stream payload";
- case DETECT_SM_LIST_AMATCH:
- return "generic app layer";
case DETECT_SM_LIST_DMATCH:
return "dcerpc";
case DETECT_SM_LIST_TMATCH:
switch (list) {
CASE_CODE_STRING(DETECT_SM_LIST_MATCH, "packet");
CASE_CODE_STRING(DETECT_SM_LIST_PMATCH, "payload");
- CASE_CODE_STRING(DETECT_SM_LIST_AMATCH, "app-layer");
CASE_CODE_STRING(DETECT_SM_LIST_DMATCH, "dcerpc");
CASE_CODE_STRING(DETECT_SM_LIST_TMATCH, "tag");
CASE_CODE_STRING(DETECT_SM_LIST_POSTMATCH, "postmatch");
switch (list) {
CASE_CODE(DETECT_SM_LIST_MATCH);
CASE_CODE(DETECT_SM_LIST_PMATCH);
- CASE_CODE(DETECT_SM_LIST_AMATCH);
CASE_CODE(DETECT_SM_LIST_DMATCH);
CASE_CODE(DETECT_SM_LIST_TMATCH);
CASE_CODE(DETECT_SM_LIST_POSTMATCH);
}
}
- for (sm = s->init_data->smlists[DETECT_SM_LIST_AMATCH]; sm != NULL; sm = sm->next) {
- if (sm->type != DETECT_AL_APP_LAYER_PROTOCOL)
- continue;
- if (((DetectAppLayerProtocolData *)sm->ctx)->negated)
- break;
- }
- if (sm != NULL && s->alproto != ALPROTO_UNKNOWN) {
- SCLogError(SC_ERR_CONFLICTING_RULE_KEYWORDS, "We can't have "
- "the rule match on a fixed alproto and at the same time"
- "have an app-layer-protocol keyword set.");
- SCReturnInt(0);
- }
-
/* TCP: pkt vs stream vs depth/offset */
if (s->proto.proto[IPPROTO_TCP / 8] & (1 << (IPPROTO_TCP % 8))) {
if (!(s->flags & (SIG_FLAG_REQUIRE_PACKET | SIG_FLAG_REQUIRE_STREAM))) {
}
}
- if (sig->init_data->smlists[DETECT_SM_LIST_AMATCH] != NULL)
- sig->flags |= SIG_FLAG_APPLAYER;
-
if (sig->init_data->smlists[DETECT_SM_LIST_DMATCH])
sig->flags |= SIG_FLAG_STATE_MATCH;
- if (sig->init_data->smlists[DETECT_SM_LIST_AMATCH])
- sig->flags |= SIG_FLAG_STATE_MATCH;
/* for other lists this flag is set when the inspect engines
* are registered */
if (s->init_data->smlists[DETECT_SM_LIST_PMATCH] != NULL)
return 0;
- if (s->init_data->smlists[DETECT_SM_LIST_AMATCH] != NULL)
- return 0;
-
/* for now assume that all registered buffer types are incompatible */
const int nlists = DetectBufferTypeMaxId();
for (int i = 0; i < nlists; i++) {
if (s->init_data->smlists[DETECT_SM_LIST_PMATCH] != NULL)
return 0;
- if (s->init_data->smlists[DETECT_SM_LIST_AMATCH] != NULL)
- return 0;
-
/* for now assume that all registered buffer types are incompatible */
const int nlists = DetectBufferTypeMaxId();
for (int i = 0; i < nlists; i++) {
SCReturnInt(0);
}
- if (s->init_data->smlists[DETECT_SM_LIST_PMATCH] != NULL ||
- s->init_data->smlists[DETECT_SM_LIST_AMATCH] != NULL)
+ if (s->init_data->smlists[DETECT_SM_LIST_PMATCH] != NULL)
{
SCReturnInt(0);
}
}
SigMatch *sm;
- for (sm = s->init_data->smlists[DETECT_SM_LIST_AMATCH] ; sm != NULL; sm = sm->next) {
- switch(sm->type) {
- case DETECT_AL_URILEN:
- case DETECT_AL_HTTP_URI:
- s->mask |= SIG_MASK_REQUIRE_HTTP_STATE;
- SCLogDebug("sig requires dce http state");
- break;
- case DETECT_AL_APP_LAYER_EVENT:
- s->mask |= SIG_MASK_REQUIRE_ENGINE_EVENT;
- break;
- }
- }
-
for (sm = s->init_data->smlists[DETECT_SM_LIST_MATCH] ; sm != NULL; sm = sm->next) {
switch(sm->type) {
case DETECT_FLOWBITS:
SCLogDebug("sig requires flow");
}
- if (s->init_data->smlists[DETECT_SM_LIST_AMATCH] != NULL) {
- s->mask |= SIG_MASK_REQUIRE_FLOW;
- SCLogDebug("sig requires flow");
- }
-
if (s->flags & SIG_FLAG_APPLAYER) {
s->mask |= SIG_MASK_REQUIRE_FLOW;
SCLogDebug("sig requires flow");
DETECT_SM_LIST_MATCH = 0,
DETECT_SM_LIST_PMATCH,
- /* list for per flow matches. Deprecated. */
- DETECT_SM_LIST_AMATCH,
-
/* list for DCE matches */
DETECT_SM_LIST_DMATCH,