patch 9.1.1476: missing out-of-memory checks in cmdexpand.c Commit: https://github.com/vim/vim/commit/1be5b375c4446976eb5a0a90d2cfa1d2d289a6ed Author: John Marriott <basil...@internode.on.net> 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 <basil...@internode.on.net> Signed-off-by: Christian Brabandt <c...@256bit.org> 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 vim_dev+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/vim_dev/E1uTlhD-00GSy9-4H%40256bit.org.