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
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to