From: Qingning Huo Date: Sun, 11 Sep 2005 13:27:47 +0000 (+0100) Subject: [PATCH] Fix buffer overflow in ce_flush(). X-Git-Tag: v0.99.7~79 X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=commitdiff_plain;h=2c865d9aa7b9c3511f901b2544b667c5188f510e;p=git.git [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 --- diff --git a/read-cache.c b/read-cache.c index ced597318..6eff4c840 100644 --- a/read-cache.c +++ b/read-cache.c @@ -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;