aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@ppc970.osdl.org>2005-05-25 18:25:08 -0700
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-05-25 18:25:08 -0700
commite871b649a3f4ede26eb98c7d46df7acdc7ecbe81 (patch)
tree47039eefa22fcbbe31884cac4fe0ab067f795105
parent9fdade06739af0b3e27422a973ae4fd83e3c918e (diff)
downloadgit-e871b649a3f4ede26eb98c7d46df7acdc7ecbe81.tar.gz
git-e871b649a3f4ede26eb98c7d46df7acdc7ecbe81.tar.xz
unpack_sha1_file: zero-pad the unpacked object.
This makes them easier to parse without having to worry about running off the end, and allows us to treat commits as normal strings.
-rw-r--r--sha1_file.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sha1_file.c b/sha1_file.c
index e6fdaa217..ac7bf9fd2 100644
--- a/sha1_file.c
+++ b/sha1_file.c
@@ -329,7 +329,7 @@ void * unpack_sha1_file(void *map, unsigned long mapsize, char *type, unsigned l
return NULL;
bytes = strlen(buffer) + 1;
- buf = xmalloc(*size);
+ buf = xmalloc(1+*size);
memcpy(buf, buffer + bytes, stream.total_out - bytes);
bytes = stream.total_out - bytes;
@@ -339,6 +339,7 @@ void * unpack_sha1_file(void *map, unsigned long mapsize, char *type, unsigned l
while (inflate(&stream, Z_FINISH) == Z_OK)
/* nothing */;
}
+ buf[*size] = 0;
inflateEnd(&stream);
return buf;
}