Browse Source

[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>
maint
Qingning Huo 20 years ago committed by Junio C Hamano
parent
commit
2c865d9aa7
  1. 7
      read-cache.c

7
read-cache.c

@ -462,6 +462,13 @@ static int ce_flush(SHA_CTX *context, int fd) @@ -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;

Loading…
Cancel
Save