From 7e7bd924326315fedb65e495b37f1d567b54e3c4 Mon Sep 17 00:00:00 2001 From: Eric Leblond Date: Tue, 27 May 2025 22:08:27 +0200 Subject: [PATCH] datajson: fix potential leak in error handling --- src/datasets-context-json.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/datasets-context-json.c b/src/datasets-context-json.c index f848e3f988..9249dd6bfd 100644 --- a/src/datasets-context-json.c +++ b/src/datasets-context-json.c @@ -367,6 +367,7 @@ static uint32_t DatajsonAddStringElement(Dataset *set, json_t *value, char *json int add_ret = DatajsonAdd(set, (const uint8_t *)val, strlen(val), &elt); if (add_ret < 0) { FatalErrorOnInit("datajson data add failed %s/%s", set->name, set->load); + SCFree(elt.value); return 0; } if (add_ret == 0) { @@ -429,6 +430,7 @@ static uint32_t DatajsonAddMd5Element(Dataset *set, json_t *value, char *json_ke int add_ret = DatajsonAdd(set, (const uint8_t *)hash, SC_MD5_LEN, &elt); if (add_ret < 0) { FatalErrorOnInit("datajson data add failed %s/%s", set->name, set->load); + SCFree(elt.value); return 0; } if (add_ret == 0) { @@ -491,6 +493,7 @@ static uint32_t DatajsonAddSha256Element(Dataset *set, json_t *value, char *json int add_ret = DatajsonAdd(set, (const uint8_t *)hash, SC_SHA256_LEN, &elt); if (add_ret < 0) { FatalErrorOnInit("datajson data add failed %s/%s", set->name, set->load); + SCFree(elt.value); return 0; } if (add_ret == 0) { @@ -548,6 +551,7 @@ static uint32_t DatajsonAddIpv4Element(Dataset *set, json_t *value, char *json_k int add_ret = DatajsonAdd(set, (const uint8_t *)&in.s_addr, SC_IPV4_LEN, &elt); if (add_ret < 0) { FatalErrorOnInit("datajson data add failed %s/%s", set->name, set->load); + SCFree(elt.value); return 0; } @@ -607,6 +611,7 @@ static uint32_t DatajsonAddIPv6Element(Dataset *set, json_t *value, char *json_k int add_ret = DatajsonAdd(set, (const uint8_t *)&in6.s6_addr, SC_IPV6_LEN, &elt); if (add_ret < 0) { FatalErrorOnInit("datajson data add failed %s/%s", set->name, set->load); + SCFree(elt.value); return 0; } if (add_ret == 0) { -- 2.47.2