[PATCH] Fix buffer overflow in ce_flush().

Add a check before appending SHA1 signature to write_buffer,
flush it first if necessary.

Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Qingning Huo 2005-09-11 14:27:47 +01:00 committed by Junio C Hamano
parent 720d150c48
commit 2c865d9aa7

View File

@ -462,6 +462,13 @@ static int ce_flush(SHA_CTX *context, int fd)
SHA1_Update(context, write_buffer, left);
}
/* Flush first if not enough space for SHA1 signature */
if (left + 20 > WRITE_BUFFER_SIZE) {
if (write(fd, write_buffer, left) != left)
return -1;
left = 0;
}
/* Append the SHA1 signature at the end */
SHA1_Final(write_buffer + left, context);
left += 20;