diff options
author | Jeff King <peff@peff.net> | 2015-09-24 17:07:25 -0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2015-09-25 10:18:18 -0700 |
commit | 0cb9d6d6b63ad7fea4ca8363f7f1f921b1e16ec7 (patch) | |
tree | c1d90cc81d90a29a6f110440763f0e4ed91ff5a8 /builtin | |
parent | 495127dbcbd53e89d7edee8db42bfa7e57c8a120 (diff) | |
download | git-0cb9d6d6b63ad7fea4ca8363f7f1f921b1e16ec7.tar.gz git-0cb9d6d6b63ad7fea4ca8363f7f1f921b1e16ec7.tar.xz |
upload-archive: convert sprintf to strbuf
When we report an error to the client, we format it into a
fixed-size buffer using vsprintf(). This can't actually
overflow in practice, since we only format a very tame
subset of strings (mostly strerror() output). However, it's
hard to tell immediately, so let's just use a strbuf so
readers do not have to wonder.
We do add an allocation here, but the performance is not
important; the next step is to call die() anyway.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin')
-rw-r--r-- | builtin/upload-archive.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/builtin/upload-archive.c b/builtin/upload-archive.c index 32ab94cd0..dbfe14f3f 100644 --- a/builtin/upload-archive.c +++ b/builtin/upload-archive.c @@ -49,15 +49,14 @@ int cmd_upload_archive_writer(int argc, const char **argv, const char *prefix) __attribute__((format (printf, 1, 2))) static void error_clnt(const char *fmt, ...) { - char buf[1024]; + struct strbuf buf = STRBUF_INIT; va_list params; - int len; va_start(params, fmt); - len = vsprintf(buf, fmt, params); + strbuf_vaddf(&buf, fmt, params); va_end(params); - send_sideband(1, 3, buf, len, LARGE_PACKET_MAX); - die("sent error to the client: %s", buf); + send_sideband(1, 3, buf.buf, buf.len, LARGE_PACKET_MAX); + die("sent error to the client: %s", buf.buf); } static ssize_t process_input(int child_fd, int band) |