Use krb_principal

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@1002 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Johan Danielsson
1996-11-17 04:08:06 +00:00
parent 95e6dc397f
commit e7932aba6c
2 changed files with 35 additions and 41 deletions

View File

@@ -137,23 +137,24 @@ auth_su(pam_handle_t *pamh, int flags, char *user, struct pam_conv *conv)
struct pam_message msg, *pmsg;
struct pam_response *resp;
char prompt[128];
char name[ANAME_SZ], inst[INST_SZ];
krb_principal pr;
pr.realm[0] = 0;
ret = pam_get_user(pamh, &user, "login: ");
if(ret != PAM_SUCCESS)
return ret;
pw = getpwuid(getuid());
if(strcmp(user, "root") == 0){
strcpy(name, pw->pw_name);
strcpy(inst, "root");
strcpy(pr.name, pw->pw_name);
strcpy(pr.instance, "root");
}else{
strcpy(name, user);
inst[0] = 0;
strcpy(pr.name, user);
pr.instance[0] = 0;
}
pmsg = &msg;
msg.msg_style = PAM_PROMPT_ECHO_OFF;
sprintf(prompt, "%s's Password: ", krb_unparse_name(name, inst, NULL));
sprintf(prompt, "%s's Password: ", krb_unparse_name(&pr));
msg.msg = prompt;
ret = conv->conv(1, (const struct pam_message**)&pmsg,
@@ -164,7 +165,7 @@ auth_su(pam_handle_t *pamh, int flags, char *user, struct pam_conv *conv)
{
char tkt[1024];
sprintf(tkt, "%s_%s_to_%s", TKT_ROOT, pw->pw_name, user);
ret = doit(pamh, name, inst, resp->resp, tkt);
ret = doit(pamh, pr.name, pr.inst, resp->resp, tkt);
if(ret == PAM_SUCCESS)
chown(tkt, pw->pw_uid, pw->pw_uid);
memset(resp->resp, 0, strlen(resp->resp));