patch 9.1.1476: missing out-of-memory checks in cmdexpand.c
Commit:
https://github.com/vim/vim/commit/1be5b375c4446976eb5a0a90d2cfa1d2d289a6ed
Author: John Marriott <[email protected]>
Date: Mon Jun 23 19:57:29 2025 +0200
patch 9.1.1476: missing out-of-memory checks in cmdexpand.c
Problem: missing out-of-memory checks in cmdexpand.c
Solution: add missing out-of-memory checks, re-order code
(John Marriott)
This commit does the following:
- in cmdline_pum_create() add out-of-memory check call of ALLOC_MULT()
- in expand_cmdline() move check for out-of-memory to cover both
assignments of file_str
- in nextwild() don't free `p2` until after it's last use.
closes: #17592
Signed-off-by: John Marriott <[email protected]>
Signed-off-by: Christian Brabandt <[email protected]>
diff --git a/src/cmdexpand.c b/src/cmdexpand.c
index a6d8c8539..4077fb341 100644
--- a/src/cmdexpand.c
+++ b/src/cmdexpand.c
@@ -335,7 +335,6 @@ nextwild(
ccline->cmdpos += difflen;
}
}
- vim_free(p2);
redrawcmd();
cursorcmd();
@@ -351,6 +350,8 @@ nextwild(
// free expanded pattern
(void)ExpandOne(xp, NULL, NULL, 0, WILD_FREE);
+ vim_free(p2);
+
return OK;
}
@@ -370,8 +371,11 @@ cmdline_pum_create(
int columns;
// Add all the completion matches
+ compl_match_array = ALLOC_MULT(pumitem_T, numMatches);
+ if (compl_match_array == NULL)
+ return EXPAND_UNSUCCESSFUL;
+
compl_match_arraysize = numMatches;
- compl_match_array = ALLOC_MULT(pumitem_T, compl_match_arraysize);
for (i = 0; i < numMatches; i++)
{
compl_match_array[i].pum_text = SHOW_MATCH(i);
@@ -2884,11 +2888,9 @@ expand_cmdline(
// If fuzzy matching, don't modify the search string
file_str = vim_strsave(xp->xp_pattern);
else
- {
file_str = addstar(xp->xp_pattern, xp->xp_pattern_len, xp->xp_context);
- if (file_str == NULL)
- return EXPAND_UNSUCCESSFUL;
- }
+ if (file_str == NULL)
+ return EXPAND_UNSUCCESSFUL;
if (p_wic)
options += WILD_ICASE;
diff --git a/src/version.c b/src/version.c
index f8dc4084b..df89e19d6 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 */
+/**/
+ 1476,
/**/
1475,
/**/
--
--
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 [email protected].
To view this discussion visit
https://groups.google.com/d/msgid/vim_dev/E1uTlhD-00GSy9-4H%40256bit.org.