changeset 32148:46c32a9a1312 v9.0.1405

patch 9.0.1405: missing check for out-of-memory Commit: https://github.com/vim/vim/commit/14338024c131b71a337c2bb87cb5904f5a5782b8 Author: Bram Moolenaar <Bram@vim.org> Date: Wed Mar 15 22:05:44 2023 +0000 patch 9.0.1405: missing check for out-of-memory Problem: Missing check for out-of-memory. Solution: Check for alloc() returning NULL pointer. (closes https://github.com/vim/vim/issues/12149)
author Bram Moolenaar <Bram@vim.org>
date Wed, 15 Mar 2023 23:15:03 +0100
parents ddbe0aae98ae
children 4336fcfe5297
files src/option.c src/version.c
diffstat 2 files changed, 18 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/src/option.c
+++ b/src/option.c
@@ -126,15 +126,14 @@ set_init_default_backupskip(void)
 #endif
     int		len;
     garray_T	ga;
-    int		mustfree;
-    char_u		*item;
+    char_u	*item;
 
     opt_idx = findoption((char_u *)"backupskip");
 
     ga_init2(&ga, 1, 100);
     for (n = 0; n < (long)ARRAY_LENGTH(names); ++n)
     {
-	mustfree = FALSE;
+	int		mustfree = FALSE;
 #ifdef UNIX
 	if (*names[n] == NUL)
 # ifdef MACOS_X
@@ -150,19 +149,22 @@ set_init_default_backupskip(void)
 	    // First time count the NUL, otherwise count the ','.
 	    len = (int)STRLEN(p) + 3;
 	    item = alloc(len);
-	    STRCPY(item, p);
-	    add_pathsep(item);
-	    STRCAT(item, "*");
-	    if (find_dup_item(ga.ga_data, item, options[opt_idx].flags)
-		    == NULL
-		    && ga_grow(&ga, len) == OK)
+	    if (item != NULL)
 	    {
-		if (ga.ga_len > 0)
-		    STRCAT(ga.ga_data, ",");
-		STRCAT(ga.ga_data, item);
-		ga.ga_len += len;
+		STRCPY(item, p);
+		add_pathsep(item);
+		STRCAT(item, "*");
+		if (find_dup_item(ga.ga_data, item, options[opt_idx].flags)
+									== NULL
+			&& ga_grow(&ga, len) == OK)
+		{
+		    if (ga.ga_len > 0)
+			STRCAT(ga.ga_data, ",");
+		    STRCAT(ga.ga_data, item);
+		    ga.ga_len += len;
+		}
+		vim_free(item);
 	    }
-	    vim_free(item);
 	}
 	if (mustfree)
 	    vim_free(p);
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1405,
+/**/
     1404,
 /**/
     1403,