X-Git-Url: http://andersk.mit.edu/gitweb/moira.git/blobdiff_plain/de56407f0fd27d5366a936b872972630f1683f0f..5feeb4c5f1666c8238a23bbae1ef17f86b2d99a5:/update/ticket.c diff --git a/update/ticket.c b/update/ticket.c index c27f3738..3df7623e 100644 --- a/update/ticket.c +++ b/update/ticket.c @@ -2,33 +2,48 @@ * $Source$ * $Header$ */ +/* (c) Copyright 1988 by the Massachusetts Institute of Technology. */ +/* For copying and distribution information, please see the file */ +/* . */ #ifndef lint static char *rcsid_ticket_c = "$Header$"; #endif lint +#include #include #include #include #include #include -#include "sms_update_int.h" -#include "com_err.h" -#include "kludge.h" +#include +#include +#include /* too bad we can't set the pathname easily */ -/*static char tkt_pathname[] = "/tmp/tkt:sms";*/ -static char *srvtab = SRVTAB; /* default == /etc/srvtab */ +static char *srvtab = KEYFILE; /* default == /etc/srvtab */ static char realm[REALM_SZ]; -static char sms[] = "sms"; +static char master[] = "sms"; +static char service[] = "rcmd"; extern char *tkt_string(), *PrincipalHostname(); -static int initialized = 0; -#define init() { if (!initialized) { get_krbrlm(realm,0); initialized=1; }} + +static init() +{ + static int initialized = 0; + + if (!initialized) { + if (krb_get_lrealm(realm, 1)) + strcpy(realm, KRB_REALM); + initialize_krb_error_table(); + initialized=1; + } +} + int -get_sms_update_ticket(host, ticket) +get_mr_update_ticket(host, ticket) char *host; KTEXT ticket; { @@ -40,30 +55,30 @@ get_sms_update_ticket(host, ticket) init(); strcpy(phost, PrincipalHostname(host)); try_it: - code = mk_ap_req(ticket, sms, phost, realm, (long)0); + 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) { + if ((code = get_mr_tgt()) != 0) { /* don't need phost buffer any more */ - sprintf(phost, "%s: can't get Kerberos TGT", - error_message(code)); - sms_log_error(phost); + com_err(whoami, code, " can't get Kerberos TGT"); return(code); } pass++; goto try_it; } - return(krb_err_frob(code)); + return(code); } int -get_sms_tgt() +get_mr_tgt() { register int code; init(); - code = get_svc_in_tkt(sms, "", realm, "krbtgt", realm, 1, srvtab); + code = krb_get_svc_in_tkt(master, "", realm, "krbtgt", realm, 1, srvtab); if (!code) return(0); else - return(krb_err_frob(code)); + return(code + ERROR_TABLE_BASE_krb); }