static void DetectTransformStripWhitespaceRegisterTests(void);
static void TransformStripWhitespace(InspectionBuffer *buffer, void *options);
+static bool TransformStripWhitespaceValidate(const uint8_t *content, uint16_t content_len, void *options);
void DetectTransformStripWhitespaceRegister(void)
{
"/rules/transforms.html#strip-whitespace";
sigmatch_table[DETECT_TRANSFORM_STRIP_WHITESPACE].Transform =
TransformStripWhitespace;
+ sigmatch_table[DETECT_TRANSFORM_STRIP_WHITESPACE].TransformValidate =
+ TransformStripWhitespaceValidate;
sigmatch_table[DETECT_TRANSFORM_STRIP_WHITESPACE].Setup =
DetectTransformStripWhitespaceSetup;
sigmatch_table[DETECT_TRANSFORM_STRIP_WHITESPACE].RegisterTests =
SCReturnInt(r);
}
+/*
+ * \brief Validate content bytes to see if it's compatible with this transform
+ * \param content Byte array to check for compatibility
+ * \param content_len Number of bytes to check
+ * \param options Ignored
+ * \retval false If the string contains spaces
+ * \retval true Otherwise.
+ */
+static bool TransformStripWhitespaceValidate(const uint8_t *content,
+ uint16_t content_len, void *options)
+{
+ if (content) {
+ for (uint32_t i = 0; i < content_len; i++) {
+ if (isspace(*content++)) {
+ return false;
+ }
+ }
+ }
+ return true;
+}
+
static void TransformStripWhitespace(InspectionBuffer *buffer, void *options)
{
const uint8_t *input = buffer->inspect;