aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2025-11-18 07:21:24 -0500
committerJunio C Hamano <gitster@pobox.com>2025-11-18 10:05:14 -0800
commit14b561e7685ee91d6a3d39684f9089c902641083 (patch)
treefd9bf85d07705b21c4c3d2d64dbe7f1ea1d54e75
parentbb5c624209fcaebd60b9572b2cc8c61086e39b57 (diff)
downloadgit-14b561e7685ee91d6a3d39684f9089c902641083.tar.gz
test-mktemp: plug memory and descriptor leaks
We test xmkstemp() in our helper by just calling: xmkstemp(xstrdup(argv[1])); This leaks both the copied string as well as the descriptor returned by the function. In practice this isn't a big deal, since we immediately exit the program, but: 1. LSan will complain about the memory leak. The only reason we did not notice this in our leak-checking builds is that both of the callers in the test suite (both in t0070) pass a broken template (and expect failure). So the function calls die() before we can actually leak. But it's an accident waiting to happen if anybody adds a call which succeeds. 2. Coverity complains about the descriptor leak. There's a long list of uninteresting or false positives in Coverity's results, but since we're here we might as well fix it, too. I didn't bother adding a new test that triggers the leak. It's not even in real production code, but just in the test-helper itself. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--t/helper/test-mktemp.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/t/helper/test-mktemp.c b/t/helper/test-mktemp.c
index 2290688940..da195640a9 100644
--- a/t/helper/test-mktemp.c
+++ b/t/helper/test-mktemp.c
@@ -6,10 +6,16 @@
int cmd__mktemp(int argc, const char **argv)
{
+ char *template;
+ int fd;
+
if (argc != 2)
usage("Expected 1 parameter defining the temporary file template");
+ template = xstrdup(argv[1]);
- xmkstemp(xstrdup(argv[1]));
+ fd = xmkstemp(template);
+ close(fd);
+ free(template);
return 0;
}