Thread (82 messages) flat view 82 messages, 11 authors, 2021-09-23

Re: [PATCH v2 3/4] SANITIZE tests: fix memory leaks in t5701*, add to whitelist

From: Andrzej Hunt <hidden>
Date: 2021-07-15 17:37:13


On 14/07/2021 19:23, Ævar Arnfjörð Bjarmason wrote:
quoted hunk ↗ jump to hunk
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 <redacted>
---
  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?).
  ...
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help