summaryrefslogtreecommitdiffstats
path: root/eBones/usr.sbin/kadmind
diff options
context:
space:
mode:
authormarkm <markm@FreeBSD.org>1995-09-07 21:39:00 +0000
committermarkm <markm@FreeBSD.org>1995-09-07 21:39:00 +0000
commit2539acf77b018acd7416a9857a14c466e55cd7e8 (patch)
tree96ff3578d62372822240f11a1567e45b880f3910 /eBones/usr.sbin/kadmind
parenteed9438eb23b62f78af7685dc226228e2bf5c524 (diff)
downloadFreeBSD-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/Makefile6
-rw-r--r--eBones/usr.sbin/kadmind/admin_server.c31
-rw-r--r--eBones/usr.sbin/kadmind/kadm_funcs.c20
-rw-r--r--eBones/usr.sbin/kadmind/kadm_ser_wrap.c32
-rw-r--r--eBones/usr.sbin/kadmind/kadm_server.c8
-rw-r--r--eBones/usr.sbin/kadmind/kadm_server.h21
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
OpenPOWER on IntegriCloud