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

[PATCH 1/3] gpg: Close stderr once finished with it in verify_signed_buffer()

From
Stephen Boyd <sboyd@codeaurora.org>
Date
Jan 31, 2013, 02:01 UTC
Message-ID
<1359597666-10108-2-git-send-email-sboyd@codeaurora.org>
In-Reply-To
<1359597666-10108-1-git-send-email-sboyd@codeaurora.org>

Failing to close the stderr pipe in verify_signed_buffer() causes git to run out of file descriptors if there are many calls to verify_signed_buffer(). An easy way to trigger this is to run

 git log --show-signature --merges | grep "key"
on the linux kernel git repo. Eventually it will fail with
 error: cannot create pipe for gpg: Too many open files
 error: could not run gpg.
Close the stderr pipe so that this can't happen.
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
---
 gpg-interface.c | 2 ++
 1 file changed, 2 insertions(+)
diff --git a/gpg-interface.c b/gpg-interface.c
index 0863c61..2c0bed3 100644
--- a/gpg-interface.c
+++ b/gpg-interface.c
@@ -133,6 +133,8 @@ int verify_signed_buffer(const char *payload, size_t payload_size,
 	if (gpg_output)
 		strbuf_read(gpg_output, gpg.err, 0);
 	ret = finish_command(&gpg);
+	if (gpg_output)
+		close(gpg.err);
 
 	unlink_or_warn(path);
 
-- 
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation
Previous: Stephen BoydNext: Jeff King
Message 2 of 13 in “GPG running out of pipes fixes”
  1. 0/3 GPG running out of pipes fixesStephen Boyd, Jan 31, 2013
  2. 1/3 gpg: Close stderr once finished with it in verify_signed_buffer()Stephen Boyd, Jan 31, 2013
  3. Jeff KingJan 31, 2013
  4. Stephen BoydJan 31, 2013
  5. 1/3 gpg: Close stderr once finished with it in verify_signed_buffer()Stephen Boyd, Jan 31, 2013
  6. Jeff KingJan 31, 2013
  7. 2/3 run-command: Be more informative about what failedStephen Boyd, Jan 31, 2013
  8. Junio C HamanoJan 31, 2013
  9. Stephen BoydJan 31, 2013
  10. Jeff KingJan 31, 2013
  11. Junio C HamanoJan 31, 2013
  12. 3/3 gpg: Allow translation of more error messagesStephen Boyd, Jan 31, 2013
  13. Jonathan NiederJan 31, 2013

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.