diff options
| author | Mark Murray <markm@FreeBSD.org> | 2001-05-24 18:35:52 +0000 |
|---|---|---|
| committer | Mark Murray <markm@FreeBSD.org> | 2001-05-24 18:35:52 +0000 |
| commit | 4448b21cc6af0b8ea84dd15681cb8bd79143cc22 (patch) | |
| tree | 91446d8e3b607d27ccdafcd592272d66d0338b09 /lib/libpam/modules/pam_unix/pam_unix.c | |
| parent | 03c0300c012663713da4bb115d4a3f504bb2984f (diff) | |
Notes
Diffstat (limited to 'lib/libpam/modules/pam_unix/pam_unix.c')
| -rw-r--r-- | lib/libpam/modules/pam_unix/pam_unix.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/lib/libpam/modules/pam_unix/pam_unix.c b/lib/libpam/modules/pam_unix/pam_unix.c index 329b7844f8eb..c8ddde7a3932 100644 --- a/lib/libpam/modules/pam_unix/pam_unix.c +++ b/lib/libpam/modules/pam_unix/pam_unix.c @@ -62,12 +62,17 @@ pam_sm_authenticate(pam_handle_t *pamh, int flags, int argc, options = 0; for (i = 0; i < argc; i++) pam_std_option(&options, argv[i]); - if ((retval = pam_get_user(pamh, &user, NULL)) != PAM_SUCCESS) - return retval; + if (options & PAM_OPT_AUTH_AS_SELF) + pwd = getpwuid(getuid()); + else { + if ((retval = pam_get_user(pamh, &user, NULL)) != PAM_SUCCESS) + return retval; + pwd = getpwnam(user); + } if ((retval = pam_get_pass(pamh, &password, PASSWORD_PROMPT, options)) != PAM_SUCCESS) return retval; - if ((pwd = getpwnam(user)) != NULL) { + if (pwd != NULL) { encrypted = crypt(password, pwd->pw_passwd); if (password[0] == '\0' && pwd->pw_passwd[0] != '\0') encrypted = ":"; |
