From e8776d30f7edb570f435cf746d712c696b862bdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn=20Nieto?= Date: Sun, 16 Sep 2012 00:10:07 +0200 Subject: [PATCH] odb: don't overflow the link path buffer Allocate a buffer large enough to store the path plus the terminator instead of letting readlink write beyond the end. --- src/odb.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/odb.c b/src/odb.c index 29c56a5bf..d1ffff652 100644 --- a/src/odb.c +++ b/src/odb.c @@ -196,10 +196,11 @@ int git_odb__hashlink(git_oid *out, const char *path) char *link_data; ssize_t read_len; - link_data = git__malloc((size_t)size); + link_data = git__malloc((size_t)(size + 1)); GITERR_CHECK_ALLOC(link_data); - read_len = p_readlink(path, link_data, (size_t)(size + 1)); + read_len = p_readlink(path, link_data, (size_t)size); + link_data[size] = '\0'; if (read_len != (ssize_t)size) { giterr_set(GITERR_OS, "Failed to read symlink data for '%s'", path); return -1;