git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 1/2] format-patch: free rev.message_id when exiting

From
Jeff King <peff@peff.net>
Date
May 19, 2023, 00:03 UTC
Message-ID
<20230519000325.GA1975194@coredump.intra.peff.net>
In-Reply-To
<20230519000239.GA1975039@coredump.intra.peff.net>

We may allocate a message-id string via gen_message_id(), but we never free it, causing a small leak. This can be demonstrated by running t9001 with a leak-checking build. The offending test is the one touched by 3ece9bf0f9 (send-email: clear the $message_id after validation, 2023-05-17), but the leak is much older than that. The test was simply unlucky enough to trigger the leaking code path for the first time.

We can fix this by freeing the string at the end of the function. We can also re-mark the test script as leak-free, effectively reverting 20bd08aefb (t9001: mark the script as no longer leak checker clean, 2023-05-17).

Signed-off-by: Jeff King <peff@peff.net>
---
 builtin/log.c         | 1 +
 t/t9001-send-email.sh | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/builtin/log.c b/builtin/log.c
index 7d19578963..ab74760386 100644
--- a/builtin/log.c
+++ b/builtin/log.c
@@ -2415,6 +2415,7 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
 	strbuf_release(&rdiff_title);
 	strbuf_release(&sprefix);
 	free(to_free);
+	free(rev.message_id);
 	if (rev.ref_message_ids)
 		string_list_clear(rev.ref_message_ids, 0);
 	free(rev.ref_message_ids);
diff --git a/t/t9001-send-email.sh b/t/t9001-send-email.sh
index 2051103226..8d49eff91a 100755
--- a/t/t9001-send-email.sh
+++ b/t/t9001-send-email.sh
@@ -4,7 +4,7 @@ test_description='git send-email'
 GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
 export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
 
-# no longer TEST_PASSES_SANITIZE_LEAK=true - format-patch --thread leaks
+TEST_PASSES_SANITIZE_LEAK=true
 . ./test-lib.sh
 
 # May be altered later in the test
-- 
2.41.0.rc0.359.g22664e20e7
Previous: Jeff KingNext: Jeff King
Message 2 of 6 in “a few format-patch leak fixes”
  1. 0/2 a few format-patch leak fixesJeff King, May 19, 2023
  2. 1/2 format-patch: free rev.message_id when exitingJeff King, May 19, 2023
  3. 2/2 format-patch: free elements of rev.ref_message_ids listJeff King, May 19, 2023
  4. Junio C HamanoMay 19, 2023
  5. Konstantin KhomoutovMay 19, 2023
  6. Junio C HamanoMay 19, 2023

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.