]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
util/byte: add HexToRaw function
authorEric Leblond <el@stamus-networks.com>
Sun, 2 Mar 2025 16:31:08 +0000 (17:31 +0100)
committerVictor Julien <victor@inliniac.net>
Wed, 11 Jun 2025 18:49:18 +0000 (20:49 +0200)
src/datasets.c
src/util-byte.c
src/util-byte.h

index 93712914e630d7d42d096a237324c86e0a7537fe..7addb37274bc83bf628697b3ec21177df000e57e 100644 (file)
@@ -95,36 +95,6 @@ static Dataset *DatasetSearchByName(const char *name)
     return NULL;
 }
 
-static int HexToRaw(const uint8_t *in, size_t ins, uint8_t *out, size_t outs)
-{
-    if (ins < 2)
-        return -1;
-    if (ins % 2 != 0)
-        return -1;
-    if (outs != ins / 2)
-        return -1;
-
-    uint8_t hash[outs];
-    memset(hash, 0, outs);
-    size_t i, x;
-    for (x = 0, i = 0; i < ins; i+=2, x++) {
-        char buf[3] = { 0, 0, 0 };
-        buf[0] = in[i];
-        buf[1] = in[i+1];
-
-        long value = strtol(buf, NULL, 16);
-        if (value >= 0 && value <= 255)
-            hash[x] = (uint8_t)value;
-        else {
-            SCLogError("hash byte out of range %ld", value);
-            return -1;
-        }
-    }
-
-    memcpy(out, hash, outs);
-    return 0;
-}
-
 static int DatasetLoadIPv4(Dataset *set)
 {
     if (strlen(set->load) == 0)
index 1b06ccd628ba571b752e30cd0930b7c751ca79c4..def6d087c44d30b0b2d7dcc093e742deb65d9e7c 100644 (file)
@@ -803,6 +803,36 @@ int StringParseI8RangeCheck(
     return ret;
 }
 
+int HexToRaw(const uint8_t *in, size_t ins, uint8_t *out, size_t outs)
+{
+    if (ins < 2)
+        return -1;
+    if (ins % 2 != 0)
+        return -1;
+    if (outs != ins / 2)
+        return -1;
+
+    uint8_t hash[outs];
+    memset(hash, 0, outs);
+    size_t i, x;
+    for (x = 0, i = 0; i < ins; i += 2, x++) {
+        char buf[3] = { 0, 0, 0 };
+        buf[0] = in[i];
+        buf[1] = in[i + 1];
+
+        long value = strtol(buf, NULL, 16);
+        if (value >= 0 && value <= 255)
+            hash[x] = (uint8_t)value;
+        else {
+            SCLogError("hash byte out of range %ld", value);
+            return -1;
+        }
+    }
+
+    memcpy(out, hash, outs);
+    return 0;
+}
+
 /* UNITTESTS */
 #ifdef UNITTESTS
 
index e0f0a67c27e0a16911b7ff3ec2a97ccdd7334d5a..eca7b47f9edf7ae3b76e4773f4bc49bbeec10150 100644 (file)
@@ -503,4 +503,6 @@ static inline int WARN_UNUSED ByteExtract(uint64_t *res, int e, uint16_t len, co
     return len;
 }
 
+int HexToRaw(const uint8_t *in, size_t ins, uint8_t *out, size_t outs);
+
 #endif /* SURICATA_UTIL_BYTE_H */