From: Junio C Hamano Date: Mon, 26 Feb 2007 19:37:43 +0000 (-0800) Subject: fetch--tool: fix uninitialized buffer when reading from stdin X-Git-Tag: v1.5.1-rc1~30^2~4 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=dec56c8cf1da06fe9ff4c9d3a26f74fb1ddd2fc6;p=git.git fetch--tool: fix uninitialized buffer when reading from stdin The original code allocates too much space and forgets to NUL terminate the string. Signed-off-by: Junio C Hamano --- diff --git a/builtin-fetch--tool.c b/builtin-fetch--tool.c index e9d16e631..5301c3cb7 100644 --- a/builtin-fetch--tool.c +++ b/builtin-fetch--tool.c @@ -2,17 +2,24 @@ #include "refs.h" #include "commit.h" -#define CHUNK_SIZE (1048576) +#define CHUNK_SIZE 1024 static char *get_stdin(void) { + int offset = 0; char *data = xmalloc(CHUNK_SIZE); - int offset = 0, read = 0; - read = xread(0, data, CHUNK_SIZE); - while (read == CHUNK_SIZE) { - offset += CHUNK_SIZE; + + while (1) { + int cnt = xread(0, data + offset, CHUNK_SIZE); + if (cnt < 0) + die("error reading standard input: %s", + strerror(errno)); + if (cnt == 0) { + data[offset] = 0; + break; + } + offset += cnt; data = xrealloc(data, offset + CHUNK_SIZE); - read = xread(0, data + offset, CHUNK_SIZE); } return data; }