]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
util/radix-tree: fix potential dereference of nullptr
authorAlexey Simakov <bigalex934@gmail.com>
Tue, 28 May 2024 16:36:58 +0000 (19:36 +0300)
committerVictor Julien <victor@inliniac.net>
Thu, 6 Jun 2024 06:55:08 +0000 (08:55 +0200)
Fix potential dereferece of nullptr in case of
unsuccessful allocation of memory leak for tree nodes

Bug: #7049
(cherry picked from commit a8217d288afe91efe8d6e222fd5b1788cec6c976)

src/util-radix-tree.c

index 97c85602d8a0a163309517b788a9cc7cf60b5503..e5fca2fcbe099b0f787e372b744b474e3a5ad035 100644 (file)
@@ -723,6 +723,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;
 
@@ -753,6 +760,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;