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

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

From
Stephen Boyd <sboyd@codeaurora.org>
Date
Jan 31, 2013, 18:18 UTC
Message-ID
<1359656320-4434-1-git-send-email-sboyd@codeaurora.org>
In-Reply-To
<20130131055053.GA11912@sigill.intra.peff.net>

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.
Suggested-by: Jeff King <peff@peff.net>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
---
 gpg-interface.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/gpg-interface.c b/gpg-interface.c
index 0863c61..5f142f6 100644
--- a/gpg-interface.c
+++ b/gpg-interface.c
@@ -130,8 +130,10 @@ int verify_signed_buffer(const char *payload, size_t payload_size,
 	write_in_full(gpg.in, payload, payload_size);
 	close(gpg.in);
 
-	if (gpg_output)
+	if (gpg_output) {
 		strbuf_read(gpg_output, gpg.err, 0);
+		close(gpg.err);
+	}
 	ret = finish_command(&gpg);
 
 	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 5 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.