]> andersk Git - moira.git/blame_incremental - update/ticket.c
Since pr_ChangeEntry() already checks to see if the id's aren't changing,
[moira.git] / update / ticket.c
... / ...
CommitLineData
1/*
2 * $Source$
3 * $Header$
4 */
5/* (c) Copyright 1988 by the Massachusetts Institute of Technology. */
6/* For copying and distribution information, please see the file */
7/* <mit-copyright.h>. */
8
9#ifndef lint
10static char *rcsid_ticket_c = "$Header$";
11#endif lint
12
13#include <mit-copyright.h>
14#include <stdio.h>
15#include <krb.h>
16#include <sys/types.h>
17#include <sys/stat.h>
18#include <strings.h>
19#include <update.h>
20#include <com_err.h>
21#include <krb_et.h>
22
23/* too bad we can't set the pathname easily */
24static char *srvtab = KEYFILE; /* default == /etc/srvtab */
25static char realm[REALM_SZ];
26static char master[] = "sms";
27static char service[] = "rcmd";
28
29extern char *tkt_string(), *PrincipalHostname();
30
31
32static init()
33{
34 static int initialized = 0;
35
36 if (!initialized) {
37 if (krb_get_lrealm(realm, 1))
38 strcpy(realm, KRB_REALM);
39 initialize_krb_error_table();
40 initialized=1;
41 }
42}
43
44
45int
46get_mr_update_ticket(host, ticket)
47 char *host;
48 KTEXT ticket;
49{
50 register int code;
51 register int pass;
52 char phost[BUFSIZ];
53
54 pass = 1;
55 init();
56 strcpy(phost, PrincipalHostname(host));
57 try_it:
58 code = krb_mk_req(ticket, service, phost, realm, (long)0);
59 if (code)
60 code += ERROR_TABLE_BASE_krb;
61 if (pass == 1) {
62 /* maybe we're taking too long? */
63 if ((code = get_mr_tgt()) != 0) {
64 /* don't need phost buffer any more */
65 com_err(whoami, code, " can't get Kerberos TGT");
66 return(code);
67 }
68 pass++;
69 goto try_it;
70 }
71 return(code);
72}
73
74int
75get_mr_tgt()
76{
77 register int code;
78 init();
79 code = krb_get_svc_in_tkt(master, "", realm, "krbtgt", realm, 1, srvtab);
80 if (!code)
81 return(0);
82 else
83 return(code + ERROR_TABLE_BASE_krb);
84}
This page took 0.03385 seconds and 5 git commands to generate.