mirror of
				https://github.com/vim/vim.git
				synced 2025-10-30 09:47:20 -04:00 
			
		
		
		
	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 <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
			
			
This commit is contained in:
		
				
					committed by
					
						 Christian Brabandt
						Christian Brabandt
					
				
			
			
				
	
			
			
			
						parent
						
							5bbdd0b082
						
					
				
				
					commit
					1be5b375c4
				
			| @@ -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 (p_wic) | ||||
| 	options += WILD_ICASE; | ||||
|   | ||||
| @@ -709,6 +709,8 @@ static char *(features[]) = | ||||
|  | ||||
| static int included_patches[] = | ||||
| {   /* Add new patch number below this line */ | ||||
| /**/ | ||||
|     1476, | ||||
| /**/ | ||||
|     1475, | ||||
| /**/ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user