patch 9.1.1434: MS-Windows: missing out-of-memory checks in os_win32.c

Commit: 
https://github.com/vim/vim/commit/738df3887f73ab2b3c87b30d41fb9c27a7bb3022
Author: John Marriott <basil...@internode.on.net>
Date:   Thu Jun 5 20:49:39 2025 +0200

    patch 9.1.1434: MS-Windows: missing out-of-memory checks in os_win32.c
    
    Problem:  MS-Windows: missing out-of-memory checks in os_win32.c
    Solution: Add out-of-memory checks to os_win32.c (John Marriott)
    
    closes: #17441
    
    Signed-off-by: John Marriott <basil...@internode.on.net>
    Signed-off-by: Christian Brabandt <c...@256bit.org>

diff --git a/src/os_win32.c b/src/os_win32.c
index 10bbb6c8d..d85cbb245 100644
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -1962,14 +1962,19 @@ encode_mouse_event(dict_T *args, INPUT_RECORD *ir)
     static int
 write_input_record_buffer(INPUT_RECORD* irEvents, int nLength)
 {
-    int nCount = 0;
+    int                                nCount = 0;
+    input_record_buffer_node_T *event_node;
+
     while (nCount < nLength)
     {
-       input_record_buffer.length++;
-       input_record_buffer_node_T *event_node =
-                                   malloc(sizeof(input_record_buffer_node_T));
+       event_node = alloc(sizeof(input_record_buffer_node_T));
+       if (event_node == NULL)
+           return -1;
+
        event_node->ir = irEvents[nCount++];
        event_node->next = NULL;
+
+       input_record_buffer.length++;
        if (input_record_buffer.tail == NULL)
        {
            input_record_buffer.head = event_node;
@@ -2065,7 +2070,13 @@ test_mswin_event(char_u *event, dict_T *args)
     // events.  But, this doesn't work well in the CI test environment.  So
     // implementing an input_record_buffer instead.
     if (input_encoded)
-       lpEventsWritten = write_input_record_buffer(&ir, 1);
+    {
+       if ((lpEventsWritten = write_input_record_buffer(&ir, 1)) < 0)
+       {
+           semsg(_(e_out_of_memory), "event");
+           return FALSE;
+       }
+    }
 
     // Set flags to execute the event, ie. like feedkeys mode X.
     if (execute)
@@ -3017,6 +3028,8 @@ mch_init_g(void)
        STRCPY(gettail(vimrun_location), "vimrun.exe");
        if (mch_getperm(vimrun_location) >= 0)
        {
+           char  *p;
+
            if (*skiptowhite(vimrun_location) != NUL)
            {
                // Enclose path with white space in double quotes.
@@ -3028,8 +3041,12 @@ mch_init_g(void)
            else
                STRCPY(gettail(vimrun_location), "vimrun ");
 
-           vimrun_path = (char *)vim_strsave(vimrun_location);
-           s_dont_use_vimrun = FALSE;
+           p = (char *)vim_strsave(vimrun_location);
+           if (p != NULL)
+           {
+               vimrun_path = p;
+               s_dont_use_vimrun = FALSE;
+           }
        }
        else if (executable_exists("vimrun.exe", NULL, TRUE, FALSE))
            s_dont_use_vimrun = FALSE;
@@ -7849,7 +7866,10 @@ copy_substream(HANDLE sh, void *context, WCHAR *to, 
WCHAR *substream, long len)
     HANDLE  hTo;
     WCHAR   *to_name;
 
-    to_name = malloc((wcslen(to) + wcslen(substream) + 1) * sizeof(WCHAR));
+    to_name = alloc((wcslen(to) + wcslen(substream) + 1) * sizeof(WCHAR));
+    if (to_name == NULL)
+       return;
+
     wcscpy(to_name, to);
     wcscat(to_name, substream);
 
@@ -8194,7 +8214,7 @@ get_cmd_argsW(char ***argvp)
     ArglistW = CommandLineToArgvW(GetCommandLineW(), &nArgsW);
     if (ArglistW != NULL)
     {
-       argv = malloc((nArgsW + 1) * sizeof(char *));
+       argv = alloc((nArgsW + 1) * sizeof(char *));
        if (argv != NULL)
        {
            argc = nArgsW;
@@ -8226,7 +8246,7 @@ get_cmd_argsW(char ***argvp)
     {
        if (used_file_indexes != NULL)
            free(used_file_indexes);
-       used_file_indexes = malloc(argc * sizeof(int));
+       used_file_indexes = alloc(argc * sizeof(int));
     }
 
     if (argvp != NULL)
diff --git a/src/version.c b/src/version.c
index ccf24302f..bfbe09d0d 100644
--- a/src/version.c
+++ b/src/version.c
@@ -709,6 +709,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1434,
 /**/
     1433,
 /**/

-- 
-- 
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/E1uNFop-001zYD-8w%40256bit.org.

Raspunde prin e-mail lui