X-Git-Url: http://andersk.mit.edu/gitweb/moira.git/blobdiff_plain/35b49ca5c29cfec2825ffa23547d7c80db4a3c1a..2796e83d397f9351ee28ccaf9db28ef2e4ac2510:/update/ticket.c diff --git a/update/ticket.c b/update/ticket.c index 7f469e6d..44ae0878 100644 --- a/update/ticket.c +++ b/update/ticket.c @@ -23,10 +23,9 @@ static char *rcsid_ticket_c = "$Header$"; /* too bad we can't set the pathname easily */ static char *srvtab = KEYFILE; /* default == /etc/srvtab */ static char realm[REALM_SZ]; -static char master[] = "sms"; -static char service[] = "rcmd"; - -extern char *tkt_string(), *PrincipalHostname(); +static char master[INST_SZ] = "sms"; +static char service[ANAME_SZ] = "rcmd"; +C_Block session; static init() @@ -43,40 +42,49 @@ static init() int -get_sms_update_ticket(host, ticket) +get_mr_update_ticket(host, ticket) char *host; KTEXT ticket; { register int code; register int pass; char phost[BUFSIZ]; + CREDENTIALS cr; pass = 1; init(); - strcpy(phost, PrincipalHostname(host)); + strcpy(phost, krb_get_phost(host)); try_it: code = krb_mk_req(ticket, service, phost, realm, (long)0); - if (code) - code += ERROR_TABLE_BASE_krb; - if (pass == 1) { - /* maybe we're taking too long? */ - if ((code = get_sms_tgt()) != 0) { - /* don't need phost buffer any more */ - com_err(whoami, code, " can't get Kerberos TGT"); - return(code); + if (code) { + if (pass == 1) { + /* maybe we're taking too long? */ + if ((code = get_mr_tgt()) != 0) { + com_err(whoami, code, " can't get Kerberos TGT"); + return(code); + } + pass++; + goto try_it; } - pass++; - goto try_it; + com_err(whoami, code, "in krb_mk_req"); + } else { + code = krb_get_cred(service, phost, realm, &cr); + bcopy(cr.session, session, sizeof(session)); } return(code); } int -get_sms_tgt() +get_mr_tgt() { register int code; + char linst[INST_SZ], kinst[INST_SZ]; + init(); - code = krb_get_svc_in_tkt(master, "", realm, "krbtgt", realm, 1, srvtab); + linst[0] = '\0'; + strcpy(kinst, "krbtgt"); + code = krb_get_svc_in_tkt(master, linst, realm, kinst, realm, + DEFAULT_TKT_LIFE, srvtab); if (!code) return(0); else