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 uint8_t output[input_len];
111 uint8_t *oi = output, *os = output;
114 for (uint32_t i = 0; i < input_len; ) {
115 if (!(isspace(*input))) {
122 while (i < input_len && isspace(*input)) {
128 uint32_t output_size = oi - os;
137 const uint8_t *input = buffer->
inspect;
139 uint8_t output[input_len * 2];
140 uint8_t *oi = output, *os = output;
143 for (uint32_t i = 0; i < input_len; i++) {
144 if (isspace(*input)) {
150 uint32_t output_size = oi - os;
157 static int DetectTransformCompressWhitespaceTest01(
void)
159 const uint8_t *input = (
const uint8_t *)
" A B C D ";
160 uint32_t input_len = strlen((
char *)input);
166 TransformCompressWhitespace(&buffer, NULL);
172 static int DetectTransformCompressWhitespaceTest02(
void)
174 const uint8_t *input = (
const uint8_t *)
" A B C D ";
175 uint32_t input_len = strlen((
char *)input);
181 TransformDoubleWhitespace(&buffer);
183 TransformDoubleWhitespace(&buffer);
185 TransformCompressWhitespace(&buffer, NULL);
191 static int DetectTransformCompressWhitespaceTest03(
void)
193 const uint8_t *input = (
const uint8_t *)
" A B C D ";
194 uint32_t input_len = strlen((
char *)input);
204 static int DetectTransformCompressWhitespaceTest04(
void)
206 const uint8_t *input = (
const uint8_t *)
" A B C D ";
207 uint32_t input_len = strlen((
char *)input);
212 TransformDoubleWhitespace(&buffer);
218 static void DetectTransformCompressWhitespaceRegisterTests(
void)
221 DetectTransformCompressWhitespaceTest01);
223 DetectTransformCompressWhitespaceTest02);
225 "DetectTransformCompressWhitespaceTest03", DetectTransformCompressWhitespaceTest03);
227 "DetectTransformCompressWhitespaceTest04", DetectTransformCompressWhitespaceTest04);