diff options
author | markm <markm@FreeBSD.org> | 1995-09-07 21:39:00 +0000 |
---|---|---|
committer | markm <markm@FreeBSD.org> | 1995-09-07 21:39:00 +0000 |
commit | 2539acf77b018acd7416a9857a14c466e55cd7e8 (patch) | |
tree | 96ff3578d62372822240f11a1567e45b880f3910 /eBones/usr.sbin/kadmind | |
parent | eed9438eb23b62f78af7685dc226228e2bf5c524 (diff) | |
download | FreeBSD-src-2539acf77b018acd7416a9857a14c466e55cd7e8.zip FreeBSD-src-2539acf77b018acd7416a9857a14c466e55cd7e8.tar.gz |
Major cleanup of eBones code:
- 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.
Diffstat (limited to 'eBones/usr.sbin/kadmind')
-rw-r--r-- | eBones/usr.sbin/kadmind/Makefile | 6 | ||||
-rw-r--r-- | eBones/usr.sbin/kadmind/admin_server.c | 31 | ||||
-rw-r--r-- | eBones/usr.sbin/kadmind/kadm_funcs.c | 20 | ||||
-rw-r--r-- | eBones/usr.sbin/kadmind/kadm_ser_wrap.c | 32 | ||||
-rw-r--r-- | eBones/usr.sbin/kadmind/kadm_server.c | 8 | ||||
-rw-r--r-- | eBones/usr.sbin/kadmind/kadm_server.h | 21 |
6 files changed, 89 insertions, 29 deletions
diff --git a/eBones/usr.sbin/kadmind/Makefile b/eBones/usr.sbin/kadmind/Makefile index 620ab81..f2e0357 100644 --- a/eBones/usr.sbin/kadmind/Makefile +++ b/eBones/usr.sbin/kadmind/Makefile @@ -3,9 +3,9 @@ PROG= kadmind SRCS= admin_server.c kadm_funcs.c kadm_ser_wrap.c kadm_server.c CFLAGS+=-DPOSIX -I${.CURDIR}/../include -I${KRBOBJDIR} \ - -I${.CURDIR}/../libkadm -I${KADMOBJDIR} + -I${.CURDIR}/../libkadm -I${KADMOBJDIR} -Wall LDADD+= -L${KADMOBJDIR} -lkadm -L${KDBOBJDIR} -lkdb -L${KRBOBJDIR} -lkrb \ - -L${DESOBJDIR} -ldes -L${ACLOBJDIR} -lacl -lcom_err -NOMAN= # man page in ../man + -ldes -L${ACLOBJDIR} -lacl -lcom_err +MAN8= kadmind.8 .include <bsd.prog.mk> diff --git a/eBones/usr.sbin/kadmind/admin_server.c b/eBones/usr.sbin/kadmind/admin_server.c index ce36eb6..72980d4 100644 --- a/eBones/usr.sbin/kadmind/admin_server.c +++ b/eBones/usr.sbin/kadmind/admin_server.c @@ -7,14 +7,14 @@ * Top-level loop of the kerberos Administration server */ -#ifndef lint #if 0 +#ifndef lint static char rcsid_admin_server_c[] = "Id: admin_server.c,v 4.8 90/01/02 13:50:38 jtkohl Exp "; -#endif static const char rcsid[] = "$Id"; #endif lint +#endif /* admin_server.c @@ -22,6 +22,8 @@ static const char rcsid[] = */ #include <stdio.h> +#include <string.h> +#include <unistd.h> #include <sys/types.h> #include <signal.h> #ifndef sigmask @@ -31,6 +33,7 @@ static const char rcsid[] = #include <errno.h> #include <sys/socket.h> #include <syslog.h> +#include <com_err.h> #include <kadm.h> #include <kadm_err.h> #include <krb_db.h> @@ -45,10 +48,19 @@ char *acldir = DEFAULT_ACL_DIR; char krbrlm[REALM_SZ]; extern Kadm_Server server_parm; +void cleanexit(int val); +void process_client(int fd, struct sockaddr_in *who); +void kill_children(void); +static void clear_secrets(void); +void byebye(void); +void close_syslog(void); +int kadm_listen(void); + /* ** Main does the logical thing, it sets up the database and RPC interface, ** as well as handling the creation and maintenance of the syslog file... */ +void main(argc, argv) /* admin_server main routine */ int argc; char *argv[]; @@ -79,7 +91,7 @@ char *argv[]; break; case 'd': /* put code to deal with alt database place */ - if (errval = kerb_db_set_name(optarg)) { + if ((errval = kerb_db_set_name(optarg))) { fprintf(stderr, "opening database %s: %s", optarg, error_message(errval)); exit(1); @@ -134,23 +146,25 @@ char *argv[]; /* close the system log file */ +void close_syslog() { log("Shutting down admin server"); } +void byebye() /* say goodnight gracie */ { printf("Admin Server (kadm server) has completed operation.\n"); } -static clear_secrets() +static void +clear_secrets() { bzero((char *)server_parm.master_key, sizeof(server_parm.master_key)); bzero((char *)server_parm.master_key_schedule, sizeof(server_parm.master_key_schedule)); server_parm.master_key_version = 0L; - return; } static exit_now = 0; @@ -173,6 +187,7 @@ int *pidarray = (int *)0; kadm_listen listen on the admin servers port for a request */ +int kadm_listen() { extern int errno; @@ -182,7 +197,6 @@ kadm_listen() fd_set mask, readfds; struct sockaddr_in peer; int addrlen; - void process_client(), kill_children(); int pid; sigtype do_child(); @@ -238,7 +252,7 @@ kadm_listen() #endif /* DEBUG */ #ifndef DEBUG /* if you want a sep daemon for each server */ - if (pid = fork()) { + if ((pid = fork())) { /* parent */ if (pid < 0) { log("fork: %s",error_message(errno)); @@ -269,6 +283,7 @@ kadm_listen() } } /*NOTREACHED*/ + return(0); /* Shut -Wall up - markm */ } #ifdef DEBUG @@ -432,7 +447,9 @@ do_child() } #ifndef DEBUG +void cleanexit(val) + int val; { kerb_fini(); clear_secrets(); diff --git a/eBones/usr.sbin/kadmind/kadm_funcs.c b/eBones/usr.sbin/kadmind/kadm_funcs.c index 4ed2365..b8ddaa0 100644 --- a/eBones/usr.sbin/kadmind/kadm_funcs.c +++ b/eBones/usr.sbin/kadmind/kadm_funcs.c @@ -7,20 +7,23 @@ * Kerberos administration server-side database manipulation routines */ -#ifndef lint #if 0 +#ifndef lint static char rcsid_kadm_funcs_c[] = "Id: kadm_funcs.c,v 4.3 90/03/20 01:39:51 jon Exp "; -#endif static const char rcsid[] = "$Id: kadm_funcs.c,v 1.1 1995/07/18 16:37:02 mark Exp $"; #endif lint +#endif /* kadm_funcs.c the actual database manipulation code */ +#include <stdio.h> +#include <string.h> +#include <com_err.h> #include <sys/param.h> #include <kadm.h> #include <kadm_err.h> @@ -29,6 +32,7 @@ the actual database manipulation code extern Kadm_Server server_parm; +int check_access(pname, pinst, prealm, acltype) char *pname; char *pinst; @@ -39,17 +43,17 @@ enum acl_types acltype; char filename[MAXPATHLEN]; extern char *acldir; - (void) sprintf(checkname, "%s.%s@%s", pname, pinst, prealm); + sprintf(checkname, "%s.%s@%s", pname, pinst, prealm); switch (acltype) { case ADDACL: - (void) sprintf(filename, "%s%s", acldir, ADD_ACL_FILE); + sprintf(filename, "%s%s", acldir, ADD_ACL_FILE); break; case GETACL: - (void) sprintf(filename, "%s%s", acldir, GET_ACL_FILE); + sprintf(filename, "%s%s", acldir, GET_ACL_FILE); break; case MODACL: - (void) sprintf(filename, "%s%s", acldir, MOD_ACL_FILE); + sprintf(filename, "%s%s", acldir, MOD_ACL_FILE); break; } return(acl_check(filename, checkname)); @@ -66,6 +70,7 @@ char *str; #define failadd(code) { (void) log("FAILED addding '%s.%s' (%s)", valsin->name, valsin->instance, error_message(code)); return code; } +int kadm_add_entry (rname, rinstance, rrealm, valsin, valsout) char *rname; /* requestors name */ char *rinstance; /* requestors instance */ @@ -171,6 +176,7 @@ Kadm_vals *valsout; #define failget(code) { (void) log("FAILED retrieving '%s.%s' (%s)", valsin->name, valsin->instance, error_message(code)); return code; } +int kadm_get_entry (rname, rinstance, rrealm, valsin, flags, valsout) char *rname; /* requestors name */ char *rinstance; /* requestors instance */ @@ -214,6 +220,7 @@ Kadm_vals *valsout; /* what data is there */ #define failmod(code) { (void) log("FAILED modifying '%s.%s' (%s)", valsin1->name, valsin1->instance, error_message(code)); return code; } +int kadm_mod_entry (rname, rinstance, rrealm, valsin1, valsin2, valsout) char *rname; /* requestors name */ char *rinstance; /* requestors instance */ @@ -313,6 +320,7 @@ Kadm_vals *valsout; /* the actual record which is returned */ #define failchange(code) { (void) log("FAILED changing key for '%s.%s@%s' (%s)", rname, rinstance, rrealm, error_message(code)); return code; } +int kadm_change (rname, rinstance, rrealm, newpw) char *rname; char *rinstance; diff --git a/eBones/usr.sbin/kadmind/kadm_ser_wrap.c b/eBones/usr.sbin/kadmind/kadm_ser_wrap.c index 23664d4..0fa1ace 100644 --- a/eBones/usr.sbin/kadmind/kadm_ser_wrap.c +++ b/eBones/usr.sbin/kadmind/kadm_ser_wrap.c @@ -7,17 +7,21 @@ * Kerberos administration server-side support functions */ +#if 0 #ifndef lint static char rcsid_module_c[] = "BonesHeader: /afs/athena.mit.edu/astaff/project/kerberos/src/kadmin/RCS/kadm_ser_wrap.c,v 4.4 89/09/26 09:29:36 jtkohl Exp "; #endif lint +#endif /* kadm_ser_wrap.c unwraps wrapped packets and calls the appropriate server subroutine */ +#include <unistd.h> #include <stdio.h> +#include <string.h> #include <sys/types.h> #include <netdb.h> #include <sys/socket.h> @@ -32,6 +36,7 @@ Kadm_Server server_parm; kadm_ser_init set up the server_parm structure */ +int kadm_ser_init(inter, realm) int inter; /* interactive or from file */ char realm[]; @@ -40,14 +45,14 @@ char realm[]; struct hostent *hp; char hostname[MAXHOSTNAMELEN]; - (void) init_kadm_err_tbl(); - (void) init_krb_err_tbl(); + init_kadm_err_tbl(); + init_krb_err_tbl(); if (gethostname(hostname, sizeof(hostname))) return KADM_NO_HOSTNAME; - (void) strcpy(server_parm.sname, PWSERV_NAME); - (void) strcpy(server_parm.sinst, KRB_MASTER); - (void) strcpy(server_parm.krbrlm, realm); + strcpy(server_parm.sname, PWSERV_NAME); + strcpy(server_parm.sinst, KRB_MASTER); + strcpy(server_parm.krbrlm, realm); server_parm.admin_fd = -1; /* setting up the addrs */ @@ -70,7 +75,8 @@ char realm[]; return KADM_SUCCESS; } -static void errpkt(dat, dat_len, code) +static void +errpkt(dat, dat_len, code) u_char **dat; int *dat_len; int code; @@ -92,6 +98,7 @@ int code; kadm_ser_in unwrap the data stored in dat, process, and return it. */ +int kadm_ser_in(dat,dat_len) u_char **dat; int *dat_len; @@ -121,8 +128,8 @@ int *dat_len; bcopy((char *)(*dat) + in_len, (char *)authent.dat, authent.length); authent.mbz = 0; /* service key should be set before here */ - if (retc = krb_rd_req(&authent, server_parm.sname, server_parm.sinst, - server_parm.recv_addr.sin_addr.s_addr, &ad, (char *)0)) + if ((retc = krb_rd_req(&authent, server_parm.sname, server_parm.sinst, + server_parm.recv_addr.sin_addr.s_addr, &ad, (char *)0))) { errpkt(dat, dat_len,retc + krb_err_base); return retc + krb_err_base; @@ -134,7 +141,8 @@ int *dat_len; #ifdef NOENCRYPTION ncksum = 0; #else - ncksum = quad_cksum(in_st, (u_long *)0, (long) r_len, 0, ad.session); + ncksum = quad_cksum((des_cblock *)in_st, (des_cblock *)0, (long) r_len, + 0, (des_cblock *)ad.session); #endif if (ncksum!=ad.checksum) { /* yow, are we correct yet */ clr_cli_secrets(); @@ -144,11 +152,11 @@ int *dat_len; #ifdef NOENCRYPTION bzero(sess_sched, sizeof(sess_sched)); #else - des_key_sched(ad.session, sess_sched); + des_key_sched((des_cblock *)ad.session, sess_sched); #endif - if (retc = (int) krb_rd_priv(in_st, r_len, sess_sched, ad.session, + if ((retc = (int) krb_rd_priv(in_st, r_len, sess_sched, ad.session, &server_parm.recv_addr, - &server_parm.admin_addr, &msg_st)) { + &server_parm.admin_addr, &msg_st))) { clr_cli_secrets(); errpkt(dat, dat_len,retc + krb_err_base); return retc + krb_err_base; diff --git a/eBones/usr.sbin/kadmind/kadm_server.c b/eBones/usr.sbin/kadmind/kadm_server.c index 25a58be..c6cbc6a 100644 --- a/eBones/usr.sbin/kadmind/kadm_server.c +++ b/eBones/usr.sbin/kadmind/kadm_server.c @@ -7,13 +7,17 @@ * Kerberos administration server-side subroutines */ +#if 0 #ifndef lint static char rcsid_kadm_server_c[] = "Header: /afs/athena.mit.edu/astaff/project/kerberos/src/kadmin/RCS/kadm_server.c,v 4.2 89/09/26 09:30:23 jtkohl Exp "; #endif lint +#endif +#include <string.h> #include <kadm.h> #include <kadm_err.h> +#include "kadm_server.h" /* kadm_ser_cpw - the server side of the change_password routine @@ -24,6 +28,7 @@ kadm_ser_cpw - the server side of the change_password routine Replaces the password (i.e. des key) of the caller with that specified in key. Returns no actual data from the master server, since this is called by a user */ +int kadm_ser_cpw(dat, len, ad, datout, outlen) u_char *dat; int len; @@ -62,6 +67,7 @@ Adds and entry containing values to the database returns the values of the entry, so if you leave certain fields blank you will be able to determine the default values they are set to */ +int kadm_ser_add(dat,len,ad, datout, outlen) u_char *dat; int len; @@ -94,6 +100,7 @@ Modifies all entries corresponding to the first values so they match the second values. returns the values for the changed entries */ +int kadm_ser_mod(dat,len,ad, datout, outlen) u_char *dat; int len; @@ -129,6 +136,7 @@ gets the fields requested by flags from all entries matching values returns this data for each matching recipient, after a count of how many such matches there were */ +int kadm_ser_get(dat,len,ad, datout, outlen) u_char *dat; int len; diff --git a/eBones/usr.sbin/kadmind/kadm_server.h b/eBones/usr.sbin/kadmind/kadm_server.h index 2d6f8bf..1708107 100644 --- a/eBones/usr.sbin/kadmind/kadm_server.h +++ b/eBones/usr.sbin/kadmind/kadm_server.h @@ -23,7 +23,7 @@ */ #include <sys/types.h> -#include <kerberosIV/krb.h> +#include <krb.h> #include <des.h> typedef struct { @@ -48,4 +48,23 @@ typedef struct { #define GET_ACL_FILE "/admin_acl.get" #define MOD_ACL_FILE "/admin_acl.mod" +int kadm_ser_in(unsigned char **dat, int *dat_len); +int kadm_ser_init(int inter, char realm[]); +int kadm_ser_cpw(u_char *dat, int len, AUTH_DAT *ad, u_char **datout, + int *outlen); +int kadm_ser_add(u_char *dat, int len, AUTH_DAT *ad, u_char **datout, + int *outlen); +int kadm_ser_mod(u_char *dat, int len, AUTH_DAT *ad, u_char **datout, + int *outlen); +int kadm_ser_get(u_char *dat, int len, AUTH_DAT *ad, u_char **datout, + int *outlen); +int kadm_change (char *rname, char *rinstance, char *rrealm, + des_cblock newpw); +int kadm_add_entry(char *rname, char *rinstance, char *rrealm, + Kadm_vals *valsin, Kadm_vals *valsout); +int kadm_mod_entry(char *rname, char *rinstance, char *rrealm, + Kadm_vals *valsin1, Kadm_vals *valsin2, Kadm_vals *valsout); +int kadm_get_entry(char *rname, char *rinstance, char *rrealm, + Kadm_vals *valsin, u_char *flags, Kadm_vals *valsout); + #endif KADM_SERVER_DEFS |