From: Eric Leblond Date: Sun, 8 Jun 2025 08:17:50 +0000 (+0200) Subject: datajson: key length fix X-Git-Tag: suricata-8.0.0-rc1~31 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=43743b0fd3643be766f63f0d1b57eeb2270f6ebf;p=thirdparty%2Fsuricata.git datajson: key length fix When using type string, we should not limit the size of the string. This patch also fixes some implicit cast issues. --- diff --git a/src/datasets-context-json.c b/src/datasets-context-json.c index 8ffb1fbbd7..6ddc0a3139 100644 --- a/src/datasets-context-json.c +++ b/src/datasets-context-json.c @@ -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)