diff options
author | Junio C Hamano <junkio@cox.net> | 2006-01-27 14:44:07 -0800 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2006-01-27 14:44:07 -0800 |
commit | 1ecc18e4fc0c91e9cab1aafbedb0eebdebaa8dd3 (patch) | |
tree | 434e41c83a51dede7fcdc822a80f4133cf59c6f8 /entry.c | |
parent | e921fb82cf6fb4a5f138ec9d27bc37c658336a8c (diff) | |
download | git-1ecc18e4fc0c91e9cab1aafbedb0eebdebaa8dd3.tar.gz |
checkout: do not make a temporary copy of symlink target.
If the index records an insanely long symbolic link, copying
into the temporary would overflow the buffer (noticed by Mark
Wooding).
Because read_sha1_file() terminates the returned buffer with NUL
since late May 2005, there is no reason to copy it anymore.
Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'entry.c')
-rw-r--r-- | entry.c | 9 |
1 files changed, 3 insertions, 6 deletions
@@ -70,7 +70,6 @@ static int write_entry(struct cache_entry *ce, const char *path, struct checkout unsigned long size; long wrote; char type[20]; - char target[1024]; new = read_sha1_file(ce->sha1, type, &size); if (!new || strcmp(type, "blob")) { @@ -94,12 +93,10 @@ static int write_entry(struct cache_entry *ce, const char *path, struct checkout return error("git-checkout-index: unable to write file %s", path); break; case S_IFLNK: - memcpy(target, new, size); - target[size] = '\0'; - if (symlink(target, path)) { + if (symlink(new, path)) { free(new); - return error("git-checkout-index: unable to create symlink %s (%s)", - path, strerror(errno)); + return error("git-checkout-index: unable to create " + "symlink %s (%s)", path, strerror(errno)); } free(new); break; |