Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 27 Mar 2011 12:53:20 +0000 (UTC)
From:      Hajimu UMEMOTO <ume@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r220055 - head/usr.bin/su
Message-ID:  <201103271253.p2RCrK6h058676@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ume
Date: Sun Mar 27 12:53:20 2011
New Revision: 220055
URL: http://svn.freebsd.org/changeset/base/220055

Log:
  getpwnam(3) may return NULL.
  
  Requested by:   nork
  Reviewed by:    Takeharu KATO <takeharu1219__at__ybb.ne.jp>, nork
  MFC after:      1 week

Modified:
  head/usr.bin/su/su.c

Modified: head/usr.bin/su/su.c
==============================================================================
--- head/usr.bin/su/su.c	Sun Mar 27 10:35:39 2011	(r220054)
+++ head/usr.bin/su/su.c	Sun Mar 27 12:53:20 2011	(r220055)
@@ -149,7 +149,7 @@ int
 main(int argc, char *argv[])
 {
 	static char	*cleanenv;
-	struct passwd	*pwd;
+	struct passwd	*pwd = NULL;
 	struct pam_conv	conv = { openpam_ttyconv, NULL };
 	enum tristate	iscsh;
 	login_cap_t	*lc;
@@ -255,8 +255,9 @@ main(int argc, char *argv[])
 	/* get current login name, real uid and shell */
 	ruid = getuid();
 	username = getlogin();
-	pwd = getpwnam(username);
-	if (username == NULL || pwd == NULL || pwd->pw_uid != ruid)
+	if (username != NULL)
+		pwd = getpwnam(username);
+	if (pwd == NULL || pwd->pw_uid != ruid)
 		pwd = getpwuid(ruid);
 	if (pwd == NULL) {
 #ifdef USE_BSM_AUDIT



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201103271253.p2RCrK6h058676>