]> andersk Git - moira.git/blame - server/mr_sauth.c
don't install chpobox
[moira.git] / server / mr_sauth.c
CommitLineData
a3cf6921 1/*
2 * $Source$
3 * $Author$
4 * $Header$
5 *
6 * Copyright (C) 1987 by the Massachusetts Institute of Technology
7 *
8 * $Log$
23e476e8 9 * Revision 1.7 1987-09-12 20:42:05 wesommer
10 * Be paranoid.
a3cf6921 11 *
23e476e8 12 * Revision 1.6 87/08/04 02:40:47 wesommer
13 * Clean up messages.
14 *
f17535a4 15 * Revision 1.5 87/07/14 00:40:18 wesommer
16 * Rearranged logging.
17 *
060e9c63 18 * Revision 1.4 87/06/30 20:03:46 wesommer
19 * Put parsed kerberos principal name into the per-client structure.
20 *
8a36ddfe 21 * Revision 1.3 87/06/21 16:40:10 wesommer
22 * Performance work, rearrangement of include files.
23 *
c27b3454 24 * Revision 1.2 87/06/04 01:34:35 wesommer
25 * Added logging of arguments for some perverse reason.
26 *
6c4883d3 27 * Revision 1.1 87/06/02 20:06:57 wesommer
28 * Initial revision
29 *
a3cf6921 30 */
31
32#ifndef lint
33static char *rcsid_sms_sauth_c = "$Header$";
34#endif lint
35
36extern int krb_err_base;
a3cf6921 37#include <strings.h>
a3cf6921 38#include "sms_server.h"
39
40extern char buf1[];
41extern char *whoami;
42extern char *malloc();
43
44/*
45 * Handle a SMS_AUTH RPC request.
46 *
47 * argv[0] is a kerberos authenticator. Decompose it, and if
48 * successful, store the name the user authenticated to in
49 * cl->cl_name.
50 */
51
52void
53do_auth(cl)
54 client *cl;
55{
56 KTEXT_ST auth;
57 AUTH_DAT ad;
58 int status;
59 char buf[REALM_SZ+INST_SZ+ANAME_SZ];
60 extern int krb_err_base;
61
23e476e8 62 if (cl->clname) {
63 free(cl->clname);
64 cl->clname = 0;
65 bzero(&cl->kname, sizeof(cl->kname));
66 }
67
a3cf6921 68 auth.length = cl->args->sms_argl[0];
69 bcopy(cl->args->sms_argv[0], (char *)auth.dat, auth.length);
70 auth.mbz = 0;
71
72 if ((status = rd_ap_req (&auth, "sms", "sms", cl->haddr.sin_addr,
73 &ad, "")) != KSUCCESS) {
74 status += krb_err_base;
75 cl->reply.sms_status = status;
060e9c63 76 if (log_flags & LOG_RES)
77 com_err(whoami, status, "(authentication failed)");
a3cf6921 78 return;
79 }
8a36ddfe 80 bcopy(ad.pname, cl->kname.name, ANAME_SZ);
81 bcopy(ad.pinst, cl->kname.inst, INST_SZ);
82 bcopy(ad.prealm, cl->kname.realm, REALM_SZ);
83
a3cf6921 84 (void) strcpy(buf, ad.pname);
85 if(ad.pinst[0]) {
86 (void) strcat(buf, ".");
87 (void) strcat(buf, ad.pinst);
88 }
89 (void) strcat(buf, "@");
90 (void) strcat(buf, ad.prealm);
91 if (cl->clname) free((char *)cl->clname);
92
93 cl->clname = (char *)malloc((unsigned)(strlen(buf)+1));
94 (void) strcpy(cl->clname, buf);
23e476e8 95 bzero(&ad, sizeof(ad)); /* Clean up session key, etc. */
060e9c63 96 if (log_flags & LOG_RES) {
f17535a4 97 com_err(whoami, 0, "Authenticated to %s", cl->clname);
060e9c63 98 }
a3cf6921 99}
This page took 0.059424 seconds and 5 git commands to generate.