From: Alexey Simakov Date: Tue, 28 May 2024 16:36:58 +0000 (+0300) Subject: util/radix-tree: fix potential dereference of nullptr X-Git-Tag: suricata-8.0.0-beta1~1237 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a8217d288afe91efe8d6e222fd5b1788cec6c976;p=thirdparty%2Fsuricata.git util/radix-tree: fix potential dereference of nullptr Fix potential dereferece of nullptr in case of unsuccessful allocation of memory leak for tree nodes Bug: #7049 --- diff --git a/src/util-radix-tree.c b/src/util-radix-tree.c index 0f570fdbc9..1b378338f7 100644 --- a/src/util-radix-tree.c +++ b/src/util-radix-tree.c @@ -700,6 +700,13 @@ static SCRadixNode *SCRadixAddKeyInternal(uint8_t *key_stream, uint8_t key_bitle return NULL; } new_node = SCRadixCreateNode(); + + if (new_node == NULL) { + SCRadixReleasePrefix(prefix, tree); + sc_errno = SC_ENOMEM; + return NULL; + } + new_node->prefix = prefix; new_node->bit = prefix->bitlen; @@ -730,6 +737,13 @@ static SCRadixNode *SCRadixAddKeyInternal(uint8_t *key_stream, uint8_t key_bitle * detail below) */ } else { inter_node = SCRadixCreateNode(); + + if (inter_node == NULL) { + SCRadixReleaseNode(new_node, tree); + sc_errno = SC_ENOMEM; + return NULL; + } + inter_node->prefix = NULL; inter_node->bit = differ_bit; inter_node->parent = node->parent;