snprintf(am->pname, sizeof(am->pname), "%s", am->name);
am->direction = direction;
am->sm_list = sm_list;
+ am->sm_list_base = sm_list;
am->priority = priority;
am->type = DETECT_BUFFER_MPM_TYPE_APP;
am->name = t->name;
am->direction = t->direction;
am->sm_list = id; // use new id
+ am->sm_list_base = t->sm_list;
am->type = DETECT_BUFFER_MPM_TYPE_APP;
am->PrefilterRegisterWithListId = t->PrefilterRegisterWithListId;
am->app_v2.GetData = t->app_v2.GetData;
am->name = t->name;
snprintf(am->pname, sizeof(am->pname), "%s#%d", am->name, id);
am->sm_list = id; // use new id
+ am->sm_list_base = t->sm_list;
am->type = DETECT_BUFFER_MPM_TYPE_PKT;
am->PrefilterRegisterWithListId = t->PrefilterRegisterWithListId;
am->pkt_v1.GetData = t->pkt_v1.GetData;
"failed to register inspect engine %s: %s", name, strerror(errno));
}
new_engine->sm_list = sm_list;
+ new_engine->sm_list_base = sm_list;
new_engine->v1.Callback = Callback;
new_engine->v1.GetData = GetPktData;
new_engine->alproto = alproto;
new_engine->dir = direction;
new_engine->sm_list = sm_list;
+ new_engine->sm_list_base = sm_list;
new_engine->progress = progress;
new_engine->v2.Callback = Callback2;
new_engine->v2.GetData = GetData;
new_engine->alproto = t->alproto;
new_engine->dir = t->dir;
new_engine->sm_list = new_list; /* use new list id */
+ new_engine->sm_list_base = sm_list;
new_engine->progress = t->progress;
new_engine->Callback = t->Callback;
new_engine->v2 = t->v2;
new_engine->alproto = t->alproto;
new_engine->dir = t->dir;
new_engine->sm_list = t->sm_list;
+ new_engine->sm_list_base = t->sm_list;
new_engine->progress = t->progress;
new_engine->Callback = t->Callback;
new_engine->v2 = t->v2;
exit(EXIT_FAILURE);
}
new_engine->sm_list = new_list; /* use new list id */
+ new_engine->sm_list_base = sm_list;
new_engine->v1 = t->v1;
new_engine->v1.transforms = transforms; /* assign transforms */
exit(EXIT_FAILURE);
}
new_engine->sm_list = t->sm_list;
+ new_engine->sm_list_base = t->sm_list;
new_engine->v1 = t->v1;
if (de_ctx->pkt_inspect_engines == NULL) {
new_engine->dir = direction;
new_engine->stream = true;
new_engine->sm_list = DETECT_SM_LIST_PMATCH;
+ new_engine->sm_list_base = DETECT_SM_LIST_PMATCH;
new_engine->smd = stream;
new_engine->Callback = DetectEngineInspectStream;
new_engine->progress = 0;
}
new_engine->sm_list = e->sm_list;
+ new_engine->sm_list_base = e->sm_list_base;
new_engine->smd = ptrs[new_engine->sm_list];
new_engine->v1 = e->v1;
SCLogDebug("sm_list %d new_engine->v1 %p/%p/%p",
new_engine->alproto = t->alproto;
new_engine->dir = t->dir;
new_engine->sm_list = t->sm_list;
+ new_engine->sm_list_base = t->sm_list_base;
new_engine->smd = ptrs[new_engine->sm_list];
new_engine->Callback = t->Callback;
new_engine->progress = t->progress;
*/
static int DetectEnginePktInspectionAppend(Signature *s,
InspectionBufferPktInspectFunc Callback,
- SigMatchData *data)
+ SigMatchData *data, const int list_id)
{
DetectEnginePktInspectionEngine *e = SCCalloc(1, sizeof(*e));
if (e == NULL)
return -1;
+ e->sm_list = list_id;
+ e->sm_list_base = list_id;
e->v1.Callback = Callback;
e->smd = data;
/* only handle PMATCH here if we're not an app inspect rule */
if (s->sm_arrays[DETECT_SM_LIST_PMATCH] && (s->init_data->init_flags & SIG_FLAG_INIT_STATE_MATCH) == 0) {
if (DetectEnginePktInspectionAppend(s, DetectEngineInspectRulePayloadMatches,
- NULL) < 0)
+ NULL, DETECT_SM_LIST_PMATCH) < 0)
return -1;
SCLogDebug("sid %u: DetectEngineInspectRulePayloadMatches appended", s->id);
}
if (s->sm_arrays[DETECT_SM_LIST_MATCH]) {
if (DetectEnginePktInspectionAppend(s, DetectEngineInspectRulePacketMatches,
- NULL) < 0)
+ NULL, DETECT_SM_LIST_MATCH) < 0)
return -1;
SCLogDebug("sid %u: DetectEngineInspectRulePacketMatches appended", s->id);
}