changeset 34792:6d03fa3a05ad v9.1.0270

patch 9.1.0270: a few minor issues to fix Commit: https://github.com/vim/vim/commit/915f3bf4c157e8f1667f52a07eb98dcecfb76875 Author: Christian Brabandt <cb@256bit.org> Date: Fri Apr 5 20:12:19 2024 +0200 patch 9.1.0270: a few minor issues to fix The following is a collection of some small fixes: - Problem: Vim9: funcref pointer pt leaks, when function is not found Solution: Free funcref pointer in case of error (fixes: #14254) - Problem: memory leak of crypt state pointer allocation fails Solution: free crypt state pointer properly (fixes: #14253) - Problem: Vim9: Leaking memory when compiling dict fails Solution: Free the memory in case of error (fixes: #14252) - Problem: Coverity complains about derefencing obj_members pointer (after v9.1.0261) Solution: Verify that obj_members ptr is non-null before accessing it References: https://scan5.scan.coverity.com/#/project-view/41242/10101?selectedIssue=1596133 closes: #14412 Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Fri, 05 Apr 2024 20:15:08 +0200
parents d5a58eaf5cff
children 90cec2e1ddc1
files src/memline.c src/userfunc.c src/version.c src/vim9execute.c src/vim9expr.c
diffstat 5 files changed, 12 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/memline.c
+++ b/src/memline.c
@@ -5556,7 +5556,10 @@ ml_encrypt_data(
 
     new_data = alloc(size);
     if (new_data == NULL)
+    {
+	crypt_free_state(state);
 	return NULL;
+    }
     head_end = (char_u *)(&dp->db_index[dp->db_line_count]);
     text_start = (char_u *)dp + dp->db_txt_start;
     text_len = size - dp->db_txt_start;
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -555,7 +555,9 @@ parse_argument_types(
 			type = &t_any;
 			for (int om = 0; om < obj_member_count; ++om)
 			{
-			    if (STRCMP(aname, obj_members[om].ocm_name) == 0)
+			    if (obj_members != NULL
+				    && STRCMP(aname,
+					obj_members[om].ocm_name) == 0)
 			    {
 				type = obj_members[om].ocm_type;
 				break;
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    270,
+/**/
     269,
 /**/
     268,
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -4573,6 +4573,7 @@ exec_instructions(ectx_T *ectx)
 		    {
 			SOURCING_LNUM = iptr->isn_lnum;
 			iemsg("ufunc unexpectedly NULL for FUNCREF");
+			vim_free(pt);
 			goto theend;
 		    }
 		    if (fill_partial_and_closure(pt, ufunc,
--- a/src/vim9expr.c
+++ b/src/vim9expr.c
@@ -1561,7 +1561,10 @@ compile_dict(char_u **arg, cctx_T *cctx,
     if (d == NULL)
 	return FAIL;
     if (generate_ppconst(cctx, ppconst) == FAIL)
+    {
+	dict_unref(d);
 	return FAIL;
+    }
     for (;;)
     {
 	char_u	    *key = NULL;