diff options
author | Carlos Martín Nieto <carlos@cmartin.tk> | 2012-09-16 00:10:07 +0200 |
---|---|---|
committer | Carlos Martín Nieto <carlos@cmartin.tk> | 2012-09-16 00:10:07 +0200 |
commit | e8776d30f7edb570f435cf746d712c696b862bdd (patch) | |
tree | 25e65bfd3fc79d3c30c7555ee1817d391a5b854a /src | |
parent | 1e90ae77c4660f9637125a9f72336a25de817efb (diff) | |
download | libgit2-e8776d30f7edb570f435cf746d712c696b862bdd.tar.gz |
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.
Diffstat (limited to 'src')
-rw-r--r-- | src/odb.c | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -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; |