summaryrefslogtreecommitdiff
path: root/abspath.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2008-12-17 20:37:48 (GMT)
committerJunio C Hamano <gitster@pobox.com>2008-12-17 21:36:34 (GMT)
commit737e31af7ae365d6251bb196e06d18afda9c98a8 (patch)
tree4c1c2ff1534fe36b72470b7dc56800c8d1345e88 /abspath.c
parentdfab6aaecfe9df67123efc778f6aea4e9814715a (diff)
downloadgit-737e31af7ae365d6251bb196e06d18afda9c98a8.zip
git-737e31af7ae365d6251bb196e06d18afda9c98a8.tar.gz
git-737e31af7ae365d6251bb196e06d18afda9c98a8.tar.bz2
make_absolute_path(): check bounds when seeing an overlong symlink
Signed-off-by: Junio C Hamano <gitster@pobox.com> Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'abspath.c')
-rw-r--r--abspath.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/abspath.c b/abspath.c
index 8194ce1..649f34f 100644
--- a/abspath.c
+++ b/abspath.c
@@ -64,6 +64,8 @@ const char *make_absolute_path(const char *path)
len = readlink(buf, next_buf, PATH_MAX);
if (len < 0)
die ("Invalid symlink: %s", buf);
+ if (PATH_MAX <= len)
+ die("symbolic link too long: %s", buf);
next_buf[len] = '\0';
buf = next_buf;
buf_index = 1 - buf_index;