summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: e921fb8)
raw | patch | inline | side by side (parent: e921fb8)
author | Junio C Hamano <junkio@cox.net> | |
Fri, 27 Jan 2006 22:44:07 +0000 (14:44 -0800) | ||
committer | Junio C Hamano <junkio@cox.net> | |
Fri, 27 Jan 2006 22:44:07 +0000 (14:44 -0800) |
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>
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>
entry.c | patch | blob | history |
index 410b758aab7efc6d777f0344500f97b1cbc52946..6c47c3a3e1acb8badaadad42dfe3d0bd7a06cac3 100644 (file)
--- a/entry.c
+++ b/entry.c
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;