Module Name:    src
Committed By:   tron
Date:           Sat Oct  2 10:05:55 UTC 2010

Modified Files:
        src/lib/libc/stdlib: putenv.c

Log Message:
Remember that we didn't malloc() memory for an environment variable
if it has been set via putenv(3).


To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 src/lib/libc/stdlib/putenv.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libc/stdlib/putenv.c
diff -u src/lib/libc/stdlib/putenv.c:1.13 src/lib/libc/stdlib/putenv.c:1.14
--- src/lib/libc/stdlib/putenv.c:1.13	Fri Oct  1 20:11:32 2010
+++ src/lib/libc/stdlib/putenv.c	Sat Oct  2 10:05:55 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: putenv.c,v 1.13 2010/10/01 20:11:32 christos Exp $	*/
+/*	$NetBSD: putenv.c,v 1.14 2010/10/02 10:05:55 tron Exp $	*/
 
 /*-
  * Copyright (c) 1988, 1993
@@ -34,7 +34,7 @@
 #if 0
 static char sccsid[] = "@(#)putenv.c	8.2 (Berkeley) 3/27/94";
 #else
-__RCSID("$NetBSD: putenv.c,v 1.13 2010/10/01 20:11:32 christos Exp $");
+__RCSID("$NetBSD: putenv.c,v 1.14 2010/10/02 10:05:55 tron Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -72,8 +72,10 @@
 	if (__allocenv(offset) == -1)
 		goto bad;
 
-	if (p != NULL && environ[offset] == __environ_malloced[offset])
+	if (p != NULL && environ[offset] == __environ_malloced[offset]) {
 		free(__environ_malloced[offset]);
+		__environ_malloced[offset] = NULL;
+	}
 
 	environ[offset] = str;
 	rwlock_unlock(&__environ_lock);

Reply via email to