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: http://git.ipfire.org/?a=commitdiff_plain;h=228740b67b55f4ee23637bd1472a73ae50efe93a;p=thirdparty%2Fgit.git 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 --- 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);