diff options
| author | Hajimu UMEMOTO <ume@FreeBSD.org> | 2011-03-27 12:53:20 +0000 |
|---|---|---|
| committer | Hajimu UMEMOTO <ume@FreeBSD.org> | 2011-03-27 12:53:20 +0000 |
| commit | 3db78cf013b4a83c9af5a6deb49595c62918b257 (patch) | |
| tree | 90c0218a926af96d4e0cbaac036466bc8cb697a8 /usr.bin | |
| parent | 4aa18e9d9391be8dec4ccb973e5ae88f5d3d0b00 (diff) | |
Notes
Diffstat (limited to 'usr.bin')
| -rw-r--r-- | usr.bin/su/su.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/usr.bin/su/su.c b/usr.bin/su/su.c index ce556ce4e4319..6557c343a0c83 100644 --- a/usr.bin/su/su.c +++ b/usr.bin/su/su.c @@ -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 |
