sm->ctx = did;
SigMatchAppendSMToList(s, sm, g_dce_generic_list_id);
+ s->init_data->init_flags |= SIG_FLAG_INIT_DCERPC;
return 0;
}
sm->ctx = (void *)dod;
SigMatchAppendSMToList(s, sm, g_dce_generic_list_id);
+ s->init_data->init_flags |= SIG_FLAG_INIT_DCERPC;
return 0;
}
}
if (DetectBufferSetActiveList(s, g_dce_stub_data_buffer_id) < 0)
return -1;
+
+ s->init_data->init_flags |= SIG_FLAG_INIT_DCERPC;
return 0;
}
AppLayerHtpNeedFileInspection();
}
}
-
+ if (s->init_data->init_flags & SIG_FLAG_INIT_DCERPC) {
+ if (s->alproto != ALPROTO_UNKNOWN && s->alproto != ALPROTO_DCERPC &&
+ s->alproto != ALPROTO_SMB) {
+ SCLogError(SC_ERR_NO_FILES_FOR_PROTOCOL, "protocol %s doesn't support DCERPC keyword",
+ AppProtoToString(s->alproto));
+ SCReturnInt(0);
+ }
+ }
SCReturnInt(1);
}
#define SIG_FLAG_INIT_NEED_FLUSH BIT_U32(7)
#define SIG_FLAG_INIT_PRIO_EXPLICT BIT_U32(8) /**< priority is explicitly set by the priority keyword */
#define SIG_FLAG_INIT_FILEDATA BIT_U32(9) /**< signature has filedata keyword */
+#define SIG_FLAG_INIT_DCERPC BIT_U32(10) /**< signature has DCERPC keyword */
/* signature mask flags */
/** \note: additions should be added to the rule analyzer as well */