]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
util: check if parsed data is in range 5101/head
authorShivani Bhardwaj <shivanib134@gmail.com>
Wed, 17 Jun 2020 13:11:51 +0000 (18:41 +0530)
committerShivani Bhardwaj <shivanib134@gmail.com>
Fri, 26 Jun 2020 06:59:56 +0000 (12:29 +0530)
src/util-byte.c

index 8709e8789fd2b4975bdb83b667e8d4bf2fe8443c..76ee47dc2396d22bee33267bff7918f0faa1504b 100644 (file)
@@ -244,6 +244,9 @@ int ByteExtractStringUint32(uint32_t *res, int base, uint16_t len, const char *s
     if (ret <= 0) {
         return ret;
     }
+    if (i64 > UINT32_MAX) {
+        return -1;
+    }
 
     *res = (uint32_t)i64;
 
@@ -264,6 +267,9 @@ int ByteExtractStringUint16(uint16_t *res, int base, uint16_t len, const char *s
     if (ret <= 0) {
         return ret;
     }
+    if (i64 > UINT16_MAX) {
+        return -1;
+    }
 
     *res = (uint16_t)i64;
 
@@ -284,6 +290,9 @@ int ByteExtractStringUint8(uint8_t *res, int base, uint16_t len, const char *str
     if (ret <= 0) {
         return ret;
     }
+    if (i64 > UINT8_MAX) {
+        return -1;
+    }
 
     *res = (uint8_t)i64;
 
@@ -309,6 +318,9 @@ int StringParseUint32(uint32_t *res, int base, uint16_t len, const char *str)
     if (ret <= 0) {
         return ret;
     }
+    if (i64 > UINT32_MAX) {
+        return -1;
+    }
 
     *res = (uint32_t)i64;
 
@@ -329,6 +341,9 @@ int StringParseUint16(uint16_t *res, int base, uint16_t len, const char *str)
     if (ret <= 0) {
         return ret;
     }
+    if (i64 > UINT16_MAX) {
+        return -1;
+    }
 
     *res = (uint16_t)i64;
 
@@ -349,6 +364,9 @@ int StringParseUint8(uint8_t *res, int base, uint16_t len, const char *str)
     if (ret <= 0) {
         return ret;
     }
+    if (i64 > UINT8_MAX) {
+        return -1;
+    }
 
     *res = (uint8_t)i64;
 
@@ -389,6 +407,9 @@ int StringParseU32RangeCheck(uint32_t *res, int base, uint16_t len, const char *
     if (ret <= 0) {
         return ret;
     }
+    if (u64 > UINT32_MAX) {
+        return -1;
+    }
 
     *res = (uint32_t)u64;
 
@@ -414,6 +435,9 @@ int StringParseU16RangeCheck(uint16_t *res, int base, uint16_t len, const char *
     if (ret <= 0) {
         return ret;
     }
+    if (u64 > UINT16_MAX) {
+        return -1;
+    }
 
     *res = (uint16_t)u64;
 
@@ -439,6 +463,9 @@ int StringParseU8RangeCheck(uint8_t *res, int base, uint16_t len, const char *st
     if (ret <= 0) {
         return ret;
     }
+    if (u64 > UINT8_MAX) {
+        return -1;
+    }
 
     *res = (uint8_t)u64;
 
@@ -515,6 +542,9 @@ int ByteExtractStringInt32(int32_t *res, int base, uint16_t len, const char *str
     if (ret <= 0) {
         return ret;
     }
+    if (i64 < INT32_MIN || i64 > INT32_MAX) {
+        return -1;
+    }
 
     *res = (int32_t)i64;
 
@@ -536,6 +566,9 @@ int ByteExtractStringInt16(int16_t *res, int base, uint16_t len, const char *str
     if (ret <= 0) {
         return ret;
     }
+    if (i64 < INT16_MIN || i64 > INT16_MAX) {
+        return -1;
+    }
 
     *res = (int16_t)i64;
 
@@ -557,6 +590,9 @@ int ByteExtractStringInt8(int8_t *res, int base, uint16_t len, const char *str)
     if (ret <= 0) {
         return ret;
     }
+    if (i64 < INT8_MIN || i64 > INT8_MAX) {
+        return -1;
+    }
 
     *res = (int8_t)i64;
 
@@ -583,6 +619,9 @@ int StringParseInt32(int32_t *res, int base, uint16_t len, const char *str)
     if (ret <= 0) {
         return ret;
     }
+    if (i64 < INT32_MIN || i64 > INT32_MAX) {
+        return -1;
+    }
 
     *res = (int32_t)i64;
 
@@ -604,6 +643,9 @@ int StringParseInt16(int16_t *res, int base, uint16_t len, const char *str)
     if (ret <= 0) {
         return ret;
     }
+    if (i64 < INT16_MIN || i64 > INT16_MAX) {
+        return -1;
+    }
 
     *res = (int16_t)i64;
 
@@ -625,6 +667,9 @@ int StringParseInt8(int8_t *res, int base, uint16_t len, const char *str)
     if (ret <= 0) {
         return ret;
     }
+    if (i64 < INT8_MIN || i64 > INT8_MAX) {
+        return -1;
+    }
 
     *res = (int8_t)i64;
 
@@ -666,6 +711,9 @@ int StringParseI32RangeCheck(int32_t *res, int base, uint16_t len, const char *s
     if (ret <= 0) {
         return ret;
     }
+    if (i64 < INT32_MIN || i64 > INT32_MAX) {
+        return -1;
+    }
 
     *res = (int32_t)i64;
 
@@ -692,6 +740,9 @@ int StringParseI16RangeCheck(int16_t *res, int base, uint16_t len, const char *s
     if (ret <= 0) {
         return ret;
     }
+    if (i64 < INT16_MIN || i64 > INT16_MAX) {
+        return -1;
+    }
 
     *res = (int16_t)i64;
 
@@ -718,6 +769,9 @@ int StringParseI8RangeCheck(int8_t *res, int base, uint16_t len, const char *str
     if (ret <= 0) {
         return ret;
     }
+    if (i64 < INT8_MIN || i64 > INT8_MAX) {
+        return -1;
+    }
 
     *res = (int8_t)i64;