]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
datajson: key length fix
authorEric Leblond <el@stamus-networks.com>
Sun, 8 Jun 2025 08:17:50 +0000 (10:17 +0200)
committerVictor Julien <victor@inliniac.net>
Wed, 11 Jun 2025 18:49:18 +0000 (20:49 +0200)
When using type string, we should not limit the size of the string.

This patch also fixes some implicit cast issues.

src/datasets-context-json.c

index 8ffb1fbbd71943280badb8ffdcfe3503de1cc483..6ddc0a31395607591b40e3681c92b2ff4b27e8a8 100644 (file)
@@ -420,11 +420,21 @@ static uint32_t DatajsonAddStringElement(Dataset *set, json_t *value, char *json
 
     *found = true;
 
-    uint8_t val[DATAJSON_JSON_LENGTH];
     const char *val_key = json_string_value(key);
-    strlcpy((char *)val, val_key, DATAJSON_JSON_LENGTH - 1);
+    if (val_key == NULL) {
+        FatalErrorOnInit("dataset: %s failed to get value for key '%s'", set->name, json_key);
+        return 0;
+    }
+    size_t val_len = strlen(val_key);
 
-    return DatajsonSetValue(set, val, strlen(val_key), value, json_key);
+    json_incref(key);
+    int ret = DatajsonSetValue(set, (const uint8_t *)val_key, (uint16_t)val_len, value, json_key);
+    json_decref(key);
+    if (ret < 0) {
+        FatalErrorOnInit("datajson data add failed %s/%s", set->name, set->load);
+        return 0;
+    }
+    return ret;
 }
 
 static int DatajsonLoadString(Dataset *set, char *json_key, char *array_key, DatasetFormats format)