void DetectAppLayerInspectEngineRegister(const char *name, AppProto alproto, uint32_t dir,
int progress, InspectEngineFuncPtr Callback, InspectionBufferGetDataPtr GetData)
{
+ /* before adding, check that we don't add a duplicate entry, which will
+ * propegate all the way into the packet runtime if allowed. */
+ DetectEngineAppInspectionEngine *t = g_app_inspect_engines;
+ while (t != NULL) {
+ const uint32_t t_direction = t->dir == 0 ? SIG_FLAG_TOSERVER : SIG_FLAG_TOCLIENT;
+ const int sm_list = DetectBufferTypeGetByName(name);
+
+ if (t->sm_list == sm_list && t->alproto == alproto && t_direction == dir &&
+ t->progress == progress && t->v2.Callback == Callback && t->v2.GetData == GetData) {
+ DEBUG_VALIDATE_BUG_ON(1);
+ return;
+ }
+ t = t->next;
+ }
+
AppLayerInspectEngineRegisterInternal(name, alproto, dir, progress, Callback, GetData, NULL);
}