diff options
author | Ævar Arnfjörð Bjarmason <avarab@gmail.com> | 2021-08-31 15:46:42 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2021-08-31 11:15:16 -0700 |
commit | 88682b016dcbdbbdebdd2efd9b7de63e4395636f (patch) | |
tree | ca0658b5f7e41691ac0b95d6257f424460047f97 /protocol-caps.c | |
parent | protocol-caps.h: add newline at end of file (diff) | |
download | tgif-88682b016dcbdbbdebdd2efd9b7de63e4395636f.tar.xz |
protocol-caps.c: fix memory leak in send_info()
Fix a memory leak in a2ba162cda (object-info: support for retrieving
object info, 2021-04-20) which appears to have been based on a
misunderstanding of how the pkt-line.c API works. There is no need to
strdup() input to packet_writer_write(), it's just a printf()-like
format function.
This fixes a potentially large memory leak, since the number of OID
lines the "object-info" call can be arbitrarily large (or a small one
if the request is small).
This makes t5701-git-serve.sh pass again under SANITIZE=leak, as it
did before a2ba162cda2.
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Acked-by: Bruno Albuquerque <bga@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'protocol-caps.c')
-rw-r--r-- | protocol-caps.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/protocol-caps.c b/protocol-caps.c index 13a9e63a04..901b6795e4 100644 --- a/protocol-caps.c +++ b/protocol-caps.c @@ -69,9 +69,10 @@ static void send_info(struct repository *r, struct packet_writer *writer, } } - packet_writer_write(writer, "%s", - strbuf_detach(&send_buffer, NULL)); + packet_writer_write(writer, "%s", send_buffer.buf); + strbuf_reset(&send_buffer); } + strbuf_release(&send_buffer); } int cap_object_info(struct repository *r, struct strvec *keys, |