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

[PATCH] transport-helper.c: don't leak fdopen'd stream buffers

From
Jim Meyering <jim@meyering.net>
Date
Sep 12, 2009, 09:38 UTC
Message-ID
<87hbv833kd.fsf@meyering.net>

Looking in the vicinity today, I noticed that these fdopen'd streams were never fclosed; technically a leak of both the FILE buffer and the file descriptor.

>From aeae4edb1146b107f6a397118db8b0ac06b884d9 Mon Sep 17 00:00:00 2001
From: Jim Meyering <meyering@redhat.com>
Date: Sat, 12 Sep 2009 11:35:17 +0200
Subject: [PATCH] transport-helper.c: don't leak fdopen'd stream buffers
* transport-helper.c (get_helper, fetch_with_fetch, get_refs_list):
Call fclose on each just-created FILE* pointer, when done.
Signed-off-by: Jim Meyering <meyering@redhat.com>
---
 transport-helper.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/transport-helper.c b/transport-helper.c
index f57e84c..0bbd014 100644
--- a/transport-helper.c
+++ b/transport-helper.c
@@ -49,6 +49,7 @@ static struct child_process *get_helper(struct transport *transport)
 		if (!strcmp(buf.buf, "fetch"))
 			data->fetch = 1;
 	}
+	fclose (file);
 	return data->helper;
 }

@@ -88,6 +89,7 @@ static int fetch_with_fetch(struct transport *transport,
 		if (strbuf_getline(&buf, file, '\n') == EOF)
 			exit(128); /* child died, message supplied already */
 	}
+	fclose (file);
 	return 0;
 }

@@ -147,6 +149,7 @@ static struct ref *get_refs_list(struct transport *transport, int for_push)
 			get_sha1_hex(buf.buf, (*tail)->old_sha1);
 		tail = &((*tail)->next);
 	}
+	fclose (file);
 	strbuf_release(&buf);

 	for (posn = ret; posn; posn = posn->next)
--
1.6.5.rc0.190.g15871
Next: Junio C Hamano
Message 1 of 4 in “transport-helper.c: don't leak fdopen'd stream buffers”
  1. transport-helper.c: don't leak fdopen'd stream buffersJim Meyering, Sep 12, 2009
  2. Junio C HamanoSep 13, 2009
  3. Jim MeyeringSep 13, 2009
  4. Johannes SixtSep 13, 2009

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.