a83b802bad
These are the start of a lot of work to clean up the FreeBSD eBones code. these changes include, but are not limited to: - Create prototypes for all the library routines - Make all the libraries compile clean with -Wall set - Fix numerous small bugs shown up in the above process - Prepare the code for libdes's removal to secure/ - add register, registerd and make_keypair to the make Lots more will follow in days to come. OK'ed by: rgrimes
59 lines
1.7 KiB
C
59 lines
1.7 KiB
C
/*
|
|
* Copyright 1985, 1986, 1987, 1988 by the Massachusetts Institute
|
|
* of Technology.
|
|
* For copying and distribution information, please see the file
|
|
* <Copyright.MIT>.
|
|
*
|
|
* from: get_cred.c,v 4.10 89/05/31 17:46:22 jtkohl Exp $
|
|
* $Id: get_cred.c,v 1.3 1995/07/18 16:38:28 mark Exp $
|
|
*/
|
|
|
|
#if 0
|
|
#ifndef lint
|
|
static char *rcsid =
|
|
"$Id: get_cred.c,v 1.3 1995/07/18 16:38:28 mark Exp $";
|
|
#endif /* lint */
|
|
#endif
|
|
|
|
#include <stdio.h>
|
|
#include <krb.h>
|
|
|
|
/*
|
|
* krb_get_cred takes a service name, instance, and realm, and a
|
|
* structure of type CREDENTIALS to be filled in with ticket
|
|
* information. It then searches the ticket file for the appropriate
|
|
* ticket and fills in the structure with the corresponding
|
|
* information from the file. If successful, it returns KSUCCESS.
|
|
* On failure it returns a Kerberos error code.
|
|
*/
|
|
|
|
int krb_get_cred(char *service, char *instance, char *realm, CREDENTIALS *c)
|
|
{
|
|
int tf_status; /* return value of tf function calls */
|
|
|
|
/* Open ticket file and lock it for shared reading */
|
|
if ((tf_status = tf_init(TKT_FILE, R_TKT_FIL)) != KSUCCESS)
|
|
return(tf_status);
|
|
|
|
/* Copy principal's name and instance into the CREDENTIALS struc c */
|
|
|
|
if ( (tf_status = tf_get_pname(c->pname)) != KSUCCESS ||
|
|
(tf_status = tf_get_pinst(c->pinst)) != KSUCCESS )
|
|
return (tf_status);
|
|
|
|
/* Search for requested service credentials and copy into c */
|
|
|
|
while ((tf_status = tf_get_cred(c)) == KSUCCESS) {
|
|
/* Is this the right ticket? */
|
|
if ((strcmp(c->service,service) == 0) &&
|
|
(strcmp(c->instance,instance) == 0) &&
|
|
(strcmp(c->realm,realm) == 0))
|
|
break;
|
|
}
|
|
(void) tf_close();
|
|
|
|
if (tf_status == EOF)
|
|
return (GC_NOTKT);
|
|
return(tf_status);
|
|
}
|