version 1.2, 1999/09/29 18:16:19 |
version 1.3, 1999/09/29 21:14:15 |
|
|
chown(ticket, pw->pw_uid, pw->pw_gid); |
chown(ticket, pw->pw_uid, pw->pw_gid); |
|
|
(void) gethostname(localhost, sizeof(localhost)); |
(void) gethostname(localhost, sizeof(localhost)); |
(void) strncpy(phost, (char *)krb_get_phost(localhost), INST_SZ); |
(void) strlcpy(phost, (char *)krb_get_phost(localhost), INST_SZ); |
phost[INST_SZ-1] = 0; |
|
|
|
/* Now that we have a TGT, try to get a local "rcmd" ticket to |
/* Now that we have a TGT, try to get a local "rcmd" ticket to |
ensure that we are not talking to a bogus Kerberos server. */ |
ensure that we are not talking to a bogus Kerberos server. */ |
|
|
#endif /* HAVE_SECURID */ |
#endif /* HAVE_SECURID */ |
|
|
/* Save the encrypted password. */ |
/* Save the encrypted password. */ |
strncpy(correct_passwd, pw->pw_passwd, sizeof(correct_passwd)); |
strlcpy(correct_passwd, pw->pw_passwd, sizeof(correct_passwd)); |
|
|
#ifdef HAVE_OSF1_C2_SECURITY |
#ifdef HAVE_OSF1_C2_SECURITY |
osf1c2_getprpwent(correct_passwd, pw->pw_name, sizeof(correct_passwd)); |
osf1c2_getprpwent(correct_passwd, pw->pw_name, sizeof(correct_passwd)); |
|
|
struct pr_passwd *pr = getprpwnam(pw->pw_name); |
struct pr_passwd *pr = getprpwnam(pw->pw_name); |
pr = getprpwnam(pw->pw_name); |
pr = getprpwnam(pw->pw_name); |
if (pr) |
if (pr) |
strncpy(correct_passwd, pr->ufld.fd_encrypt, sizeof(correct_passwd)); |
strlcpy(correct_passwd, pr->ufld.fd_encrypt, sizeof(correct_passwd)); |
endprpwent(); |
endprpwent(); |
} |
} |
#else /* HAVE_SCO_ETC_SHADOW */ |
#else /* HAVE_SCO_ETC_SHADOW */ |
|
|
{ |
{ |
struct spwd *sp = getspnam(pw->pw_name); |
struct spwd *sp = getspnam(pw->pw_name); |
if (sp) |
if (sp) |
strncpy(correct_passwd, sp->sp_pwdp, sizeof(correct_passwd)); |
strlcpy(correct_passwd, sp->sp_pwdp, sizeof(correct_passwd)); |
endspent(); |
endspent(); |
} |
} |
#else /* HAVE_ETC_SHADOW */ |
#else /* HAVE_ETC_SHADOW */ |
|
|
{ |
{ |
struct passwd_adjunct *sp = getpwanam(pw->pw_name); |
struct passwd_adjunct *sp = getpwanam(pw->pw_name); |
if (sp) |
if (sp) |
strncpy(correct_passwd, sp->pwa_passwd, sizeof(correct_passwd)); |
strnlpy(correct_passwd, sp->pwa_passwd, sizeof(correct_passwd)); |
endpwaent(); |
endpwaent(); |
} |
} |
#else /* HAVE_ETC_SECURITY_PASSWD_ADJUNCT */ |
#else /* HAVE_ETC_SECURITY_PASSWD_ADJUNCT */ |
|
|
f = fopen("/etc/security/passwd", "r"); |
f = fopen("/etc/security/passwd", "r"); |
if (f) |
if (f) |
{ |
{ |
sprintf(looking_for_user, "%.190s:", server_user); |
snprintf(looking_for_user, sizeof looking_for_user, "%.190s:", |
|
server_user); |
while (fgets(line, sizeof(line), f)) |
while (fgets(line, sizeof(line), f)) |
{ |
{ |
if (strchr(line, '\n')) |
if (strchr(line, '\n')) |
|
|
; |
; |
if (strncmp(cp, "password = ", strlen("password = ")) == 0) |
if (strncmp(cp, "password = ", strlen("password = ")) == 0) |
{ |
{ |
strncpy(correct_passwd, cp + strlen("password = "), |
strlcpy(correct_passwd, cp + strlen("password = "), |
sizeof(correct_passwd)); |
sizeof(correct_passwd)); |
correct_passwd[sizeof(correct_passwd) - 1] = 0; |
|
break; |
break; |
} |
} |
} |
} |