]> git.ipfire.org Git - thirdparty/git.git/commit - log-tree.c
log_write_email_headers: use strbufs
authorJeff King <peff@peff.net>
Sat, 19 May 2018 01:57:44 +0000 (18:57 -0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 21 May 2018 00:54:34 +0000 (09:54 +0900)
commitd50b69b868d1b6a7f36e94382c74d2e8cda2d64a
tree420aeb61cdeb102be3e34b6209f45f320ea638b6
parent390c6cbc5e643b6d89869b319b51b5b62a3f5a09
log_write_email_headers: use strbufs

When we write a MIME attachment, we write the mime headers
into fixed-size buffers. These are likely to be big enough
in practice, but technically the input could be arbitrarily
large (e.g., if the caller provided a lot of content in the
extra_headers string), in which case we'd quietly truncate
it and generate bogus output. Let's convert these buffers to
strbufs.

The memory ownership here is a bit funny. The original fixed
buffers were static, and we merely pass out pointers to them
to be used by the caller (and in one case, we even just
stuff our value into the opt->diffopt.stat_sep value).
Ideally we'd actually pass back heap buffers, and the caller
would be responsible for freeing them.

This patch punts on that cleanup for now, and instead just
marks the strbufs as static. That means we keep ownership in
this function, making it not a complete leak. This also
takes us one step closer to fixing it in the long term
(since we can eventually use strbuf_detach() to hand
ownership to the caller, once it's ready).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
log-tree.c