Package: git-core
Severity: grave
Tags: security
A buffer overflow bug has been discovered in GIT. Upstream version
1.1.5 fixes it, too.
Author: Junio C Hamano <[EMAIL PROTECTED]> 2006-01-27 23:44:07
Committer: Junio C Hamano <[EMAIL PROTECTED]> 2006-01-27 23:44:07
Parent: e921fb82cf6fb4a5f138ec9d27bc37c658336a8c (git-fetch-pack: really do not
ask for funny refs)
Child: ca182053c7710a286d72102f4576cf32e0dafcfb (GIT 1.0.13)
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 <[EMAIL PROTECTED]>
----------------------------------- entry.c -----------------------------------
index 410b758..6c47c3a 100644
@@ -68,11 +68,10 @@ static int write_entry(struct cache_entr
int fd;
void *new;
unsigned long size;
long wrote;
char type[20];
- char target[1024];
new = read_sha1_file(ce->sha1, type, &size);
if (!new || strcmp(type, "blob")) {
if (new)
free(new);
@@ -92,16 +91,14 @@ static int write_entry(struct cache_entr
free(new);
if (wrote != size)
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;
default:
free(new);
--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]