mirror of
https://github.com/freebsd/freebsd-src.git
synced 2024-11-29 11:02:44 +00:00
d79d4a7ced
- Get all functions prototyped or at least defined before use. - Make code compile (Mostly) clean with -Wall set - Start to reduce the degree to which DES aka libdes is built in. - get all functions to the same uniform standard of definition: int foo(a, b) int a; int *b; { : } - fix numerous bugs exposed by above processes. Note - this replaces the previous work which used an unpopular function definition style.
64 lines
1.9 KiB
C
64 lines
1.9 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(service,instance,realm,c)
|
|
char *service; /* Service name */
|
|
char *instance; /* Instance */
|
|
char *realm; /* Auth domain */
|
|
CREDENTIALS *c; /* Credentials struct */
|
|
{
|
|
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);
|
|
}
|