Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
fetch--tool: fix uninitialized buffer when reading from stdin
author
Junio C Hamano
<junkio@cox.net>
Mon, 26 Feb 2007 19:37:43 +0000
(11:37 -0800)
committer
Junio C Hamano
<junkio@cox.net>
Wed, 28 Feb 2007 00:12:23 +0000
(16:12 -0800)
The original code allocates too much space and forgets to NUL
terminate the string.
Signed-off-by: Junio C Hamano <junkio@cox.net>
builtin-fetch--tool.c
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (parent:
dcf01c6
)
diff --git
a/builtin-fetch--tool.c
b/builtin-fetch--tool.c
index e9d16e631585c3795ee628ec33997548a01a01b4..5301c3cb783a8d2949ba93e776c4a3166da37c81 100644
(file)
--- a/
builtin-fetch--tool.c
+++ b/
builtin-fetch--tool.c
@@
-2,17
+2,24
@@
#include "refs.h"
#include "commit.h"
#include "refs.h"
#include "commit.h"
-#define CHUNK_SIZE
(1048576)
+#define CHUNK_SIZE
1024
static char *get_stdin(void)
{
static char *get_stdin(void)
{
+ int offset = 0;
char *data = xmalloc(CHUNK_SIZE);
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);
data = xrealloc(data, offset + CHUNK_SIZE);
- read = xread(0, data + offset, CHUNK_SIZE);
}
return data;
}
}
return data;
}