39 static void DetectTransformCompressWhitespaceRegisterTests(
void);
41 static void TransformCompressWhitespace(
InspectionBuffer *buffer,
void *options);
42 static bool TransformCompressWhitespaceValidate(
43 const uint8_t *content, uint16_t content_len,
void *options);
49 "modify buffer to compress consecutive whitespace characters "
50 "into a single one before inspection";
52 "/rules/transforms.html#compress-whitespace";
54 TransformCompressWhitespace;
56 TransformCompressWhitespaceValidate;
58 DetectTransformCompressWhitespaceSetup;
61 DetectTransformCompressWhitespaceRegisterTests;
90 static bool TransformCompressWhitespaceValidate(
91 const uint8_t *content, uint16_t content_len,
void *options)
94 for (uint32_t i = 0; i < content_len; i++) {
95 if (!isspace(*content++)) {
98 if ((i + 1) < content_len && isspace(*content)) {
106 static void TransformCompressWhitespace(
InspectionBuffer *buffer,
void *options)
108 const uint8_t *input = buffer->
inspect;
110 if (input_len == 0) {
114 uint8_t output[input_len];
115 uint8_t *oi = output, *os = output;
118 for (uint32_t i = 0; i < input_len; ) {
119 if (!(isspace(*input))) {
126 while (i < input_len && isspace(*input)) {
132 uint32_t output_size = oi - os;
141 const uint8_t *input = buffer->
inspect;
143 uint8_t output[input_len * 2];
144 uint8_t *oi = output, *os = output;
147 for (uint32_t i = 0; i < input_len; i++) {
148 if (isspace(*input)) {
154 uint32_t output_size = oi - os;
161 static int DetectTransformCompressWhitespaceTest01(
void)
163 const uint8_t *input = (
const uint8_t *)
" A B C D ";
164 uint32_t input_len = strlen((
char *)input);
170 TransformCompressWhitespace(&buffer, NULL);
176 static int DetectTransformCompressWhitespaceTest02(
void)
178 const uint8_t *input = (
const uint8_t *)
" A B C D ";
179 uint32_t input_len = strlen((
char *)input);
185 TransformDoubleWhitespace(&buffer);
187 TransformDoubleWhitespace(&buffer);
189 TransformCompressWhitespace(&buffer, NULL);
195 static int DetectTransformCompressWhitespaceTest03(
void)
197 const uint8_t *input = (
const uint8_t *)
" A B C D ";
198 uint32_t input_len = strlen((
char *)input);
208 static int DetectTransformCompressWhitespaceTest04(
void)
210 const uint8_t *input = (
const uint8_t *)
" A B C D ";
211 uint32_t input_len = strlen((
char *)input);
216 TransformDoubleWhitespace(&buffer);
222 static void DetectTransformCompressWhitespaceRegisterTests(
void)
225 DetectTransformCompressWhitespaceTest01);
227 DetectTransformCompressWhitespaceTest02);
229 "DetectTransformCompressWhitespaceTest03", DetectTransformCompressWhitespaceTest03);
231 "DetectTransformCompressWhitespaceTest04", DetectTransformCompressWhitespaceTest04);