worktree: use xsize_t to access file size
To read the "gitdir" file into memory, we stat the file and allocate a buffer. But we store the size in an "int", which may be truncated. We should use a size_t and xsize_t(), which will detect truncation. An overflow is unlikely for a "gitdir" file, but it's a good practice to model. Signed-off-by: Jeff King <peff@peff.net> Reviewed-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
		 Jeff King
					Jeff King
				
			
				
					committed by
					
						 Junio C Hamano
						Junio C Hamano
					
				
			
			
				
	
			
			
			 Junio C Hamano
						Junio C Hamano
					
				
			
						parent
						
							41dcc4dccc
						
					
				
				
					commit
					228740b67b
				
			| @ -38,7 +38,8 @@ static int prune_worktree(const char *id, struct strbuf *reason) | |||||||
| { | { | ||||||
| 	struct stat st; | 	struct stat st; | ||||||
| 	char *path; | 	char *path; | ||||||
| 	int fd, len; | 	int fd; | ||||||
|  | 	size_t len; | ||||||
|  |  | ||||||
| 	if (!is_directory(git_path("worktrees/%s", id))) { | 	if (!is_directory(git_path("worktrees/%s", id))) { | ||||||
| 		strbuf_addf(reason, _("Removing worktrees/%s: not a valid directory"), id); | 		strbuf_addf(reason, _("Removing worktrees/%s: not a valid directory"), id); | ||||||
| @ -56,7 +57,7 @@ static int prune_worktree(const char *id, struct strbuf *reason) | |||||||
| 			    id, strerror(errno)); | 			    id, strerror(errno)); | ||||||
| 		return 1; | 		return 1; | ||||||
| 	} | 	} | ||||||
| 	len = st.st_size; | 	len = xsize_t(st.st_size); | ||||||
| 	path = xmallocz(len); | 	path = xmallocz(len); | ||||||
| 	read_in_full(fd, path, len); | 	read_in_full(fd, path, len); | ||||||
| 	close(fd); | 	close(fd); | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user