6 * Copyright (C) 1987 by the Massachusetts Institute of Technology
9 * Revision 1.3 1987-06-21 16:40:10 wesommer
10 * Performance work, rearrangement of include files.
12 * Revision 1.2 87/06/04 01:34:35 wesommer
13 * Added logging of arguments for some perverse reason.
15 * Revision 1.1 87/06/02 20:06:57 wesommer
21 static char *rcsid_sms_sauth_c = "$Header$";
24 extern int krb_err_base;
27 #include "sms_server.h"
31 extern char *malloc();
34 * Handle a SMS_AUTH RPC request.
36 * argv[0] is a kerberos authenticator. Decompose it, and if
37 * successful, store the name the user authenticated to in
48 char buf[REALM_SZ+INST_SZ+ANAME_SZ];
49 extern int krb_err_base;
51 com_err(whoami, 0, "Processing auth: ");
52 log_args(cl->args->sms_argc, cl->args->sms_argv);
54 auth.length = cl->args->sms_argl[0];
56 bcopy(cl->args->sms_argv[0], (char *)auth.dat, auth.length);
59 if ((status = rd_ap_req (&auth, "sms", "sms", cl->haddr.sin_addr,
60 &ad, "")) != KSUCCESS) {
61 status += krb_err_base;
62 cl->reply.sms_status = status;
63 com_err(whoami, status, "(authentication failed)");
66 (void) strcpy(buf, ad.pname);
68 (void) strcat(buf, ".");
69 (void) strcat(buf, ad.pinst);
71 (void) strcat(buf, "@");
72 (void) strcat(buf, ad.prealm);
73 if (cl->clname) free((char *)cl->clname);
75 cl->clname = (char *)malloc((unsigned)(strlen(buf)+1));
76 (void) strcpy(cl->clname, buf);
77 (void) sprintf(buf1, "Authenticated to %s", cl->clname);
78 com_err(whoami, 0, buf1);