diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-05-25 18:25:08 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-05-25 18:25:08 -0700 |
commit | e871b649a3f4ede26eb98c7d46df7acdc7ecbe81 (patch) | |
tree | 47039eefa22fcbbe31884cac4fe0ab067f795105 | |
parent | 9fdade06739af0b3e27422a973ae4fd83e3c918e (diff) | |
download | git-e871b649a3f4ede26eb98c7d46df7acdc7ecbe81.tar.gz |
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.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sha1_file.c b/sha1_file.c index e6fdaa217a..ac7bf9fd27 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; } |