setup.c: stop prefix_pathspec() from looping past the end of string
The code assumes that the string ends at either `)` or `,`, and does not handle the case where strcspn() returns length due to end of string. So specifying ":(top" as pathspec will cause the loop to go past the end of string. Signed-off-by: Andrew Wong <andrew.kw.w@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
		
				
					committed by
					
						
						Junio C Hamano
					
				
			
			
				
	
			
			
			
						parent
						
							7e2010537e
						
					
				
				
					commit
					772e47cd67
				
			
							
								
								
									
										7
									
								
								setup.c
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								setup.c
									
									
									
									
									
								
							@ -199,10 +199,11 @@ static const char *prefix_pathspec(const char *prefix, int prefixlen, const char
 | 
			
		||||
		     *copyfrom && *copyfrom != ')';
 | 
			
		||||
		     copyfrom = nextat) {
 | 
			
		||||
			size_t len = strcspn(copyfrom, ",)");
 | 
			
		||||
			if (copyfrom[len] == ')')
 | 
			
		||||
				nextat = copyfrom + len;
 | 
			
		||||
			else
 | 
			
		||||
			if (copyfrom[len] == ',')
 | 
			
		||||
				nextat = copyfrom + len + 1;
 | 
			
		||||
			else
 | 
			
		||||
				/* handle ')' and '\0' */
 | 
			
		||||
				nextat = copyfrom + len;
 | 
			
		||||
			if (!len)
 | 
			
		||||
				continue;
 | 
			
		||||
			for (i = 0; i < ARRAY_SIZE(pathspec_magic); i++)
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user