]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
detect: transforms check for 0-sized buffer
authorPhilippe Antoine <pantoine@oisf.net>
Thu, 25 Aug 2022 15:05:41 +0000 (17:05 +0200)
committerVictor Julien <vjulien@oisf.net>
Mon, 19 Sep 2022 08:31:53 +0000 (10:31 +0200)
So as to avoid undefined behavior with a 0-sized variable length
array

Ticket: #5521
(cherry picked from commit 61b73416e27a07cab50743d69c1cf5cd7f07b45d)

src/detect-transform-compress-whitespace.c
src/detect-transform-strip-whitespace.c
src/detect-transform-urldecode.c

index 13b5f4d01e1c6ed6e740f66e2598f52118adceaa..5cbf0fd896f509cd8960cb3a12c98ed227767547 100644 (file)
@@ -107,6 +107,10 @@ static void TransformCompressWhitespace(InspectionBuffer *buffer, void *options)
 {
     const uint8_t *input = buffer->inspect;
     const uint32_t input_len = buffer->inspect_len;
+    if (input_len == 0) {
+        return;
+    }
+
     uint8_t output[input_len]; // we can only shrink
     uint8_t *oi = output, *os = output;
 
index 055a7e00d06157f69a1dbbf54f9cadcfacdd0dc7..6d76f65008db68a463b71dcf1db279c6b154138d 100644 (file)
@@ -102,6 +102,9 @@ static void TransformStripWhitespace(InspectionBuffer *buffer, void *options)
 {
     const uint8_t *input = buffer->inspect;
     const uint32_t input_len = buffer->inspect_len;
+    if (input_len == 0) {
+        return;
+    }
     uint8_t output[input_len]; // we can only shrink
     uint8_t *oi = output, *os = output;
 
index 526561f2f9924a8410dd00b735ff97f77d4e1fc3..ee104ebc11d88a8583349ae9bb9acb0af7662c58 100644 (file)
@@ -119,6 +119,9 @@ static void TransformUrlDecode(InspectionBuffer *buffer, void *options)
 
     const uint8_t *input = buffer->inspect;
     const uint32_t input_len = buffer->inspect_len;
+    if (input_len == 0) {
+        return;
+    }
     uint8_t output[input_len]; // we can only shrink
 
     changed = BufferUrlDecode(input, input_len, output, &output_size);