Commit 9d9288f417968a7fd583786a749c4f7dfa258f89

Philip Kelley 2012-10-14T12:29:05

Fix buffer overrun in git_buf_put_base64

1
2
3
4
5
6
7
8
9
10
11
12
13
diff --git a/src/buffer.c b/src/buffer.c
index ee2dd28..b40b16b 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -195,7 +195,7 @@ int git_buf_put_base64(git_buf *buf, const char *data, size_t len)
 	uint8_t *write, a, b, c;
 	const uint8_t *read = (const uint8_t *)data;
 
-	ENSURE_SIZE(buf, buf->size + ((len * 4 + 3) / 3) + 1);
+	ENSURE_SIZE(buf, buf->size + 4 * ((len / 3) + !!extra) + 1);
 	write = (uint8_t *)&buf->ptr[buf->size];
 
 	/* convert each run of 3 bytes into 4 output bytes */