From: Jeff King Date: Wed, 27 Sep 2017 06:02:21 +0000 (-0400) Subject: worktree: use xsize_t to access file size X-Git-Tag: v2.15.0-rc0~19^2~1 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/228740b67b55f4ee23637bd1472a73ae50efe93a?hp=--cc 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 Reviewed-by: Jonathan Nieder Signed-off-by: Junio C Hamano --- 228740b67b55f4ee23637bd1472a73ae50efe93a diff --git a/builtin/worktree.c b/builtin/worktree.c index de26849f55..2f4a4ef9cd 100644 --- a/builtin/worktree.c +++ b/builtin/worktree.c @@ -38,7 +38,8 @@ static int prune_worktree(const char *id, struct strbuf *reason) { struct stat st; char *path; - int fd, len; + int fd; + size_t len; if (!is_directory(git_path("worktrees/%s", 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)); return 1; } - len = st.st_size; + len = xsize_t(st.st_size); path = xmallocz(len); read_in_full(fd, path, len); close(fd);