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

[PATCH] compat/setenv: do not free what we fed putenv(3).

From
Junio C Hamano <junkio@cox.net>
Date
Dec 4, 2005, 23:01 UTC
Message-ID
<7vlkz0eaan.fsf@assigned-by-dhcp.cox.net>
In-Reply-To
<28409.1133564908@lotus.CS.Berkeley.EDU>
Signed-off-by: Junio C Hamano <junkio@cox.net>
---
 compat/setenv.c |    8 ++++++--
 1 files changed, 6 insertions(+), 2 deletions(-)
3a2674337c12e958f8c697af991a0ef6c06ddd4d
diff --git a/compat/setenv.c b/compat/setenv.c
index 94acd2d..b7d7678 100644
--- a/compat/setenv.c
+++ b/compat/setenv.c
@@ -16,7 +16,7 @@ int gitsetenv(const char *name, const ch
 
 	namelen = strlen(name);
 	valuelen = strlen(value);
-	envstr = malloc((namelen + valuelen + 2) * sizeof(char));
+	envstr = malloc((namelen + valuelen + 2));
 	if (!envstr) return -1;
 
 	memcpy(envstr, name, namelen);
@@ -25,7 +25,11 @@ int gitsetenv(const char *name, const ch
 	envstr[namelen + valuelen + 1] = 0;
 
 	out = putenv(envstr);
+	/* putenv(3) makes the argument string part of the environment,
+	 * and changing that string modifies the environment --- which
+	 * means we do not own that storage anymore.  Do not free
+	 * envstr.
+	 */
 
-	free(envstr);
 	return out;
 }
-- 
0.99.9.GIT
Previous: Morten Welinder
Message 15 of 15 in “Add compat/setenv.c, use in git.c.”
  1. Add compat/setenv.c, use in git.c.Jason Riedy, Dec 2, 2005
  2. Junio C HamanoDec 4, 2005
  3. H. Peter AnvinDec 4, 2005
  4. Junio C HamanoDec 4, 2005
  5. Junio C HamanoDec 4, 2005
  6. H. Peter AnvinDec 4, 2005
  7. Jason RiedyDec 5, 2005
  8. H. Peter AnvinDec 5, 2005
  9. Junio C HamanoDec 6, 2005
  10. Jason RiedyDec 6, 2005
  11. Morten WelinderDec 6, 2005
  12. Junio C HamanoDec 6, 2005
  13. Jason RiedyDec 6, 2005
  14. Morten WelinderDec 7, 2005
  15. compat/setenv: do not free what we fed putenv(3).Junio C Hamano, Dec 4, 2005

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.