]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
detect/distance: improve value parsing and fix broken test
authorVictor Julien <victor@inliniac.net>
Tue, 13 Nov 2018 00:45:05 +0000 (16:45 -0800)
committerVictor Julien <victor@inliniac.net>
Sun, 18 Nov 2018 14:12:51 +0000 (15:12 +0100)
src/detect-content.c
src/detect-distance.c

index 1f369fb9c2a85797e618b8ccc33d8fa57cd3b286..a4d4d98ea21920ca34b48efd1b13d9476b14e6e9 100644 (file)
@@ -2773,7 +2773,7 @@ static int SigTest69TestNegatedContent(void)
 
 static int SigTest70TestNegatedContent(void)
 {
-    return SigTestNegativeTestContent("alert tcp any any -> any any (content:\"one\"; content:!\"fourty\"; within:52; distance:45 sid:1;)", (uint8_t *)"one four nine fourteen twentythree thirtyfive fourtysix fiftysix");
+    return SigTestNegativeTestContent("alert tcp any any -> any any (content:\"one\"; content:!\"fourty\"; within:52; sid:1;)", (uint8_t *)"one four nine fourteen twentythree thirtyfive fourtysix fiftysix");
 }
 
 /** \test within and distance */
index b40ded90eea4f4b7bfbd1b2b2c0e0d6ae154ebb5..3937f7c26a6209ff8e493cf78eb2ce317987d098 100644 (file)
@@ -41,6 +41,7 @@
 
 #include "flow-var.h"
 
+#include "util-byte.h"
 #include "util-debug.h"
 #include "util-unittest.h"
 #include "detect-bytejump.h"
@@ -112,7 +113,11 @@ static int DetectDistanceSetup (DetectEngineCtx *de_ctx, Signature *s,
         cd->distance = ((DetectByteExtractData *)bed_sm->ctx)->local_id;
         cd->flags |= DETECT_CONTENT_DISTANCE_BE;
     } else {
-        cd->distance = strtol(str, NULL, 10);
+        if (ByteExtractStringInt32(&cd->distance, 0, 0, str) != (int)strlen(str)) {
+            SCLogError(SC_ERR_INVALID_SIGNATURE,
+                      "invalid value for distance: %s", str);
+            goto end;
+        }
     }
     cd->flags |= DETECT_CONTENT_DISTANCE;