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:
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);
|
||||||
|
Loading…
Reference in New Issue
Block a user