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

Modified Files:
        src/usr.bin/su: su_pam.c

Log Message:
Don't free memory that was succesfully passed to putenv(3) which takes
ownership of the memory.


To generate a diff of this commit:
cvs rdiff -u -r1.15 -r1.16 src/usr.bin/su/su_pam.c

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

Modified files:

Index: src/usr.bin/su/su_pam.c
diff -u src/usr.bin/su/su_pam.c:1.15 src/usr.bin/su/su_pam.c:1.16
--- src/usr.bin/su/su_pam.c:1.15	Mon Jul 21 14:19:26 2008
+++ src/usr.bin/su/su_pam.c	Sat Oct  2 10:55:36 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: su_pam.c,v 1.15 2008/07/21 14:19:26 lukem Exp $	*/
+/*	$NetBSD: su_pam.c,v 1.16 2010/10/02 10:55:36 tron Exp $	*/
 
 /*
  * Copyright (c) 1988 The Regents of the University of California.
@@ -39,7 +39,7 @@
 #if 0
 static char sccsid[] = "@(#)su.c	8.3 (Berkeley) 4/2/94";*/
 #else
-__RCSID("$NetBSD: su_pam.c,v 1.15 2008/07/21 14:19:26 lukem Exp $");
+__RCSID("$NetBSD: su_pam.c,v 1.16 2010/10/02 10:55:36 tron Exp $");
 #endif
 #endif /* not lint */
 
@@ -469,8 +469,8 @@
 				 * how could we get untrusted data here?
 				 */
 				for (envitem = pamenv; *envitem; envitem++) {
-					(void)putenv(*envitem);
-					free(*envitem);
+					if (putenv(*envitem) == -1)
+						free(*envitem);
 				}
 
 				free(pamenv);

Reply via email to