summaryrefslogtreecommitdiff
path: root/bulk-checkin.c
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2015-09-24 17:06:42 -0400
committerJunio C Hamano <gitster@pobox.com>2015-09-25 10:18:18 -0700
commitef1286d3c0ba714c6c2ae87e14edf3c462aef114 (patch)
treeb43b47b015c9a6bc479bb221ddc299996e336183 /bulk-checkin.c
parentf2f026752993054c1b712b6f4ae3ff167db38cbe (diff)
downloadgit-ef1286d3c0ba714c6c2ae87e14edf3c462aef114.tar.gz
use xsnprintf for generating git object headers
We generally use 32-byte buffers to format git's "type size" header fields. These should not generally overflow unless you can produce some truly gigantic objects (and our types come from our internal array of constant strings). But it is a good idea to use xsnprintf to make sure this is the case. Note that we slightly modify the interface to write_sha1_file_prepare, which nows uses "hdrlen" as an "in" parameter as well as an "out" (on the way in it stores the allocated size of the header, and on the way out it returns the ultimate size of the header). Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'bulk-checkin.c')
-rw-r--r--bulk-checkin.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/bulk-checkin.c b/bulk-checkin.c
index 7cffc3a579..4347f5c76a 100644
--- a/bulk-checkin.c
+++ b/bulk-checkin.c
@@ -200,8 +200,8 @@ static int deflate_to_pack(struct bulk_checkin_state *state,
if (seekback == (off_t) -1)
return error("cannot find the current offset");
- header_len = sprintf((char *)obuf, "%s %" PRIuMAX,
- typename(type), (uintmax_t)size) + 1;
+ header_len = xsnprintf((char *)obuf, sizeof(obuf), "%s %" PRIuMAX,
+ typename(type), (uintmax_t)size) + 1;
git_SHA1_Init(&ctx);
git_SHA1_Update(&ctx, obuf, header_len);