From 2a594a3bd1e8e134d0922d651d19ef9efac8c1bd Mon Sep 17 00:00:00 2001 From: Luke Howard Date: Wed, 4 Jan 2023 18:14:28 +1100 Subject: [PATCH] base: Fix CID 1518898 Resource leak Don't leak new_node if invalid node type in heim_path_vcreate() --- lib/base/heimbase.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/base/heimbase.c b/lib/base/heimbase.c index 67a8308a1..f3bef7546 100644 --- a/lib/base/heimbase.c +++ b/lib/base/heimbase.c @@ -967,16 +967,12 @@ heim_path_vcreate(heim_object_t ptr, size_t size, heim_object_t leaf, if (node_type == HEIM_TID_DICT) { ret = heim_dict_set_value(node, path_element, new_node); - heim_release(new_node); - next_node = heim_dict_get_value(node, path_element); } else if (node_type == HEIM_TID_ARRAY && heim_number_get_int(path_element) <= heim_array_get_length(node)) { ret = heim_array_insert_value(node, heim_number_get_int(path_element), new_node); - heim_release(new_node); - next_node = heim_array_get_value(node, idx); } else { ret = EINVAL; @@ -984,6 +980,8 @@ heim_path_vcreate(heim_object_t ptr, size_t size, heim_object_t leaf, *error = heim_error_create(ret, "Node in path not a " "container"); } + + heim_release(new_node); if (ret) goto err; }