Re: [PATCH v2 3/4] SANITIZE tests: fix memory leaks in t5701*, add to whitelist
- From
Andrzej Hunt <andrzej@ahunt.org>
- Date
- Jul 15, 2021, 17:37 UTC
- Message-ID
- <c6c7cfea-8292-2034-f9d6-de350e6e2692@ahunt.org>
- In-Reply-To
- <patch-3.4-b7fb5d5a56-20210714T172251Z-avarab@gmail.com>
On 14/07/2021 19:23, Ævar Arnfjörð Bjarmason wrote:
Show 30 quoted lines
> 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, 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). > > Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> > --- > protocol-caps.c | 5 +++-- > t/t5701-git-serve.sh | 1 + > 2 files changed, 4 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); > }
Good catch! strbuf's seem to be a common source of leak, where either the release is forgotten or detach is used incorrectly - and I'm tempted to try and implement some automated checks to catch those (I wonder if coccicheck is powerful enough for this?).
> ...