]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 9.1.1580: possible memory leak in vim9type.c v9.1.1580
authorLidong Yan <yldhome2d2@gmail.com>
Tue, 22 Jul 2025 16:11:11 +0000 (18:11 +0200)
committerChristian Brabandt <cb@256bit.org>
Tue, 22 Jul 2025 16:11:11 +0000 (18:11 +0200)
Problem:  possible memory leak in vim9type.c
Solution: Free tuple_types_ga if there was an error in
          type_type_add_types() (Lidong Yan)

In parse_type_tuple() at src/vim9type.c, we allocate memory
in `tuple_types_ga` by ga_grow(), but forget to free it when
tuple_type_add_types() fails. Replace `return NULL` with `goto on_err`
to fix leak.

closes: #17820

Signed-off-by: Lidong Yan <yldhome2d2@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
src/version.c
src/vim9type.c

index b5e0da2a2c086234a22dd5f1ac493fbcb2a130c7..fa2ebcda9855ad61fb67db5af54d458c75110b37 100644 (file)
@@ -719,6 +719,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1580,
 /**/
     1579,
 /**/
index 62e9344ef9ba06f2e428121434ff6bdf01cf154b..1a20d9bd0dc9703ffe69da50ea1cfc8b5fe2551e 100644 (file)
@@ -1886,8 +1886,10 @@ parse_type_tuple(
     ret_type = alloc_tuple_type(typecount, type_gap);
     ret_type->tt_flags = flags;
     ret_type->tt_argcount = typecount;
-    if (tuple_type_add_types(ret_type, typecount, type_gap) == FAIL)
-       return NULL;
+    if (tuple_type_add_types(ret_type, typecount, type_gap) == FAIL) {
+       ret_type = NULL;
+       goto on_err;
+    }
     mch_memmove(ret_type->tt_args, tuple_types_ga.ga_data,
                                                sizeof(type_T *) * typecount);