patch 9.1.1270: missing out-of-memory checks in buffer.c

Commit: 
https://github.com/vim/vim/commit/7fb90815a0a29238c12e53b53e14fc55109f02b7
Author: John Marriott <basil...@internode.on.net>
Date:   Wed Apr 2 20:32:35 2025 +0200

    patch 9.1.1270: missing out-of-memory checks in buffer.c
    
    Problem:  missing out-of-memory checks in buffer.c
    Solution: handle out-of-memory situations during allocation
              (John Marriott)
    
    closes: #17031
    
    Signed-off-by: John Marriott <basil...@internode.on.net>
    Signed-off-by: Christian Brabandt <c...@256bit.org>

diff --git a/src/buffer.c b/src/buffer.c
index 68388db08..8277b726c 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -2926,6 +2926,8 @@ ExpandBufnames(
                p = home_replace_save(buf, p);
            else
                p = vim_strsave(p);
+           if (p == NULL)
+               return FAIL;
 
            if (!fuzzy)
            {
@@ -4030,8 +4032,11 @@ maketitle(void)
            else
            {
                p = transstr(gettail(curbuf->b_fname));
-               vim_strncpy(buf, p, SPACE_FOR_FNAME);
-               vim_free(p);
+               if (p != NULL)
+               {
+                   vim_strncpy(buf, p, SPACE_FOR_FNAME);
+                   vim_free(p);
+               }
            }
 
 #ifdef FEAT_TERMINAL
@@ -4084,8 +4089,11 @@ maketitle(void)
                if (off < SPACE_FOR_DIR)
                {
                    p = transstr(buf + off);
-                   vim_strncpy(buf + off, p, (size_t)(SPACE_FOR_DIR - off));
-                   vim_free(p);
+                   if (p != NULL)
+                   {
+                       vim_strncpy(buf + off, p, (size_t)(SPACE_FOR_DIR - 
off));
+                       vim_free(p);
+                   }
                }
                else
                {
@@ -4767,25 +4775,29 @@ build_stl_str_hl(
                size_t new_fmt_len = parsed_usefmt
                                                 + str_length + fmt_length + 3;
                char_u *new_fmt = (char_u *)alloc(new_fmt_len * sizeof(char_u));
-               char_u *new_fmt_p = new_fmt;
-
-               new_fmt_p = (char_u *)memcpy(new_fmt_p, usefmt, parsed_usefmt)
-                                                              + parsed_usefmt;
-               new_fmt_p = (char_u *)memcpy(new_fmt_p , str, str_length)
-                                                                 + str_length;
-               new_fmt_p = (char_u *)memcpy(new_fmt_p, "%}", 2) + 2;
-               new_fmt_p = (char_u *)memcpy(new_fmt_p , s, fmt_length)
-                                                                 + fmt_length;
-               *new_fmt_p = 0;
-               new_fmt_p = NULL;
-
-               if (usefmt != fmt)
-                   vim_free(usefmt);
-               VIM_CLEAR(str);
-               usefmt = new_fmt;
-               s = usefmt + parsed_usefmt;
-               evaldepth++;
-               continue;
+
+               if (new_fmt != NULL)
+               {
+                   char_u *new_fmt_p = new_fmt;
+
+                   new_fmt_p = (char_u *)memcpy(new_fmt_p, usefmt, 
parsed_usefmt)
+                                                                  + 
parsed_usefmt;
+                   new_fmt_p = (char_u *)memcpy(new_fmt_p , str, str_length)
+                                                                     + 
str_length;
+                   new_fmt_p = (char_u *)memcpy(new_fmt_p, "%}", 2) + 2;
+                   new_fmt_p = (char_u *)memcpy(new_fmt_p , s, fmt_length)
+                                                                     + 
fmt_length;
+                   *new_fmt_p = 0;
+                   new_fmt_p = NULL;
+
+                   if (usefmt != fmt)
+                       vim_free(usefmt);
+                   VIM_CLEAR(str);
+                   usefmt = new_fmt;
+                   s = usefmt + parsed_usefmt;
+                   evaldepth++;
+                   continue;
+               }
            }
 #endif
            break;
diff --git a/src/version.c b/src/version.c
index 7882f5eb7..6f54a94f5 100644
--- a/src/version.c
+++ b/src/version.c
@@ -704,6 +704,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1270,
 /**/
     1269,
 /**/

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
To view this discussion visit 
https://groups.google.com/d/msgid/vim_dev/E1u035D-00DxYj-0B%40256bit.org.

Raspunde prin e-mail lui