diff options
Diffstat (limited to 'eBones/lib/libkadm/kadm_cli_wrap.c')
-rw-r--r-- | eBones/lib/libkadm/kadm_cli_wrap.c | 86 |
1 files changed, 36 insertions, 50 deletions
diff --git a/eBones/lib/libkadm/kadm_cli_wrap.c b/eBones/lib/libkadm/kadm_cli_wrap.c index 7e1cfa9..3522e74 100644 --- a/eBones/lib/libkadm/kadm_cli_wrap.c +++ b/eBones/lib/libkadm/kadm_cli_wrap.c @@ -7,20 +7,22 @@ * Kerberos administration server client-side routines */ -#ifndef lint #if 0 +#ifndef lint static char rcsid_kadm_cli_wrap_c[] = "from: Id: kadm_cli_wrap.c,v 4.6 89/12/30 20:09:45 qjb Exp"; -#endif static const char rcsid[] = - "$Id: kadm_cli_wrap.c,v 1.1 1995/01/20 02:02:51 wollman Exp $"; + "$Id: kadm_cli_wrap.c,v 1.1 1995/07/18 16:40:23 mark Exp $"; #endif lint +#endif /* * kadm_cli_wrap.c the client side wrapping of the calls to the admin server */ #include <sys/types.h> +#include <unistd.h> +#include <string.h> #include <errno.h> #include <signal.h> #include <netdb.h> @@ -29,6 +31,12 @@ static const char rcsid[] = #include <kadm_err.h> #include <krb_err.h> +int kadm_cli_out(u_char *dat, int dat_len, u_char **ret_dat, int *ret_siz); +int kadm_cli_send(u_char *st_dat, int st_siz, u_char **ret_dat, int *ret_siz); +int kadm_cli_keyd(des_cblock *s_k, des_key_schedule s_s); +int kadm_cli_conn(void); +void kadm_cli_disconn(void); + #ifndef NULL #define NULL 0 #endif @@ -42,8 +50,7 @@ static Kadm_Client client_parm; static des_cblock sess_key; /* to be filled in by kadm_cli_keyd */ static Key_schedule sess_sched; -static -clear_secrets() +static void clear_secrets() { bzero((char *)sess_key, sizeof(sess_key)); bzero((char *)sess_sched, sizeof(sess_sched)); @@ -58,10 +65,7 @@ clear_secrets() * data about the connection between the server and client, the services * used, the locations and other fun things */ -kadm_init_link(n, i, r) -char n[]; -char i[]; -char r[]; +int kadm_init_link(char n[], char i[], char r[]) { struct servent *sep; /* service we will talk to */ struct hostent *hop; /* host we will talk to */ @@ -100,8 +104,7 @@ char r[]; * key. Returns no actual data from the master server, since this is called * by a user */ -kadm_change_pw(newkey) -des_cblock newkey; /* The DES form of the users key */ +int kadm_change_pw(des_cblock newkey) { int stsize, retc; /* stream size and return code */ u_char *send_st; /* send stream */ @@ -145,8 +148,7 @@ des_cblock newkey; /* The DES form of the users key */ * entry, so if you leave certain fields blank you will be able to determine * the default values they are set to */ -kadm_add(vals) -Kadm_vals *vals; +int kadm_add(Kadm_vals *vals) { u_char *st, *st2; /* st will hold the stream of values */ int st_len; /* st2 the final stream with opcode */ @@ -182,9 +184,7 @@ Kadm_vals *vals; * Modifies all entries corresponding to the first values so they match the * second values. returns the values for the changed entries in vals2 */ -kadm_mod(vals1, vals2) -Kadm_vals *vals1; -Kadm_vals *vals2; +int kadm_mod(Kadm_vals *vals1, Kadm_vals *vals2) { u_char *st, *st2; /* st will hold the stream of values */ int st_len, nlen; /* st2 the final stream with opcode */ @@ -228,10 +228,7 @@ Kadm_vals *vals2; * this data for each matching recipient, after a count of how many such * matches there were */ -kadm_get(vals, fl) -Kadm_vals *vals; -u_char fl[4]; - +int kadm_get(Kadm_vals *vals, u_char fl[4]) { int loop; /* for copying the fields data */ u_char *st, *st2; /* st will hold the stream of values */ @@ -279,11 +276,7 @@ u_char fl[4]; * connection to the admin server. If the connection is succesfully open * then it sends the data and waits for a reply. */ -kadm_cli_send(st_dat, st_siz, ret_dat, ret_siz) -u_char *st_dat; /* the actual data */ -int st_siz; /* length of said data */ -u_char **ret_dat; /* to give return info */ -int *ret_siz; /* length of returned info */ +int kadm_cli_send(u_char *st_dat, int st_siz, u_char **ret_dat, int *ret_siz) { int act_len, retdat; /* current offset into packet, return * data */ @@ -299,7 +292,7 @@ int *ret_siz; /* length of returned info */ (void) strncpy((char *)act_st, KADM_VERSTR, KADM_VERSIZE); act_len = KADM_VERSIZE; - if ((retdat = kadm_cli_keyd(sess_key, sess_sched)) != KADM_SUCCESS) { + if ((retdat = kadm_cli_keyd(&sess_key, sess_sched)) != KADM_SUCCESS) { free((char *)act_st); return retdat; /* couldnt get key working */ } @@ -318,11 +311,11 @@ int *ret_siz; /* length of returned info */ #ifdef NOENCRYPTION cksum = 0; #else - cksum = quad_cksum(priv_pak, (u_long *)0, (long)priv_len, 0, - sess_key); + cksum = quad_cksum((des_cblock *)priv_pak, (des_cblock *)0, + (long)priv_len, 0, &sess_key); #endif - if (retdat = krb_mk_req(&authent, client_parm.sname, client_parm.sinst, - client_parm.krbrlm, (long)cksum)) { + if ((retdat = krb_mk_req(&authent, client_parm.sname, client_parm.sinst, + client_parm.krbrlm, (long)cksum))) { /* authenticator? */ RET_N_FREE(retdat + krb_err_base); } @@ -359,9 +352,9 @@ int *ret_siz; /* length of returned info */ RET_N_FREE2(retdat); } /* need to decode the ret_dat */ - if (retdat = krb_rd_priv(*ret_dat, (u_long)*ret_siz, sess_sched, + if ((retdat = krb_rd_priv(*ret_dat, (u_long)*ret_siz, sess_sched, sess_key, &client_parm.admin_addr, - &client_parm.my_addr, &mdat)) + &client_parm.my_addr, &mdat))) RET_N_FREE2(retdat+krb_err_base); if (mdat.app_length < KADM_VERSIZE + 4) /* too short! */ @@ -386,23 +379,21 @@ int *ret_siz; /* length of returned info */ } /* takes in the sess_key and key_schedule and sets them appropriately */ -kadm_cli_keyd(s_k, s_s) -des_cblock s_k; /* session key */ -des_key_schedule s_s; /* session key schedule */ +int kadm_cli_keyd(des_cblock *s_k, des_key_schedule s_s) { CREDENTIALS cred; /* to get key data */ int stat; /* want .sname and .sinst here.... */ - if (stat = krb_get_cred(client_parm.sname, client_parm.sinst, - client_parm.krbrlm, &cred)) + if ((stat = krb_get_cred(client_parm.sname, client_parm.sinst, + client_parm.krbrlm, &cred))) return stat + krb_err_base; bcopy((char *) cred.session, (char *) s_k, sizeof(des_cblock)); bzero((char *) cred.session, sizeof(des_cblock)); #ifdef NOENCRYPTION bzero(s_s, sizeof(des_key_schedule)); #else - if (stat = key_sched(s_k,s_s)) + if ((stat = key_sched(s_k,s_s))) return(stat+krb_err_base); #endif return KADM_SUCCESS; @@ -410,7 +401,7 @@ des_key_schedule s_s; /* session key schedule */ static sigtype (*opipe)(); -kadm_cli_conn() +int kadm_cli_conn() { /* this connects and sets my_addr */ int on = 1; @@ -444,20 +435,15 @@ kadm_cli_conn() return KADM_SUCCESS; } -kadm_cli_disconn() +void kadm_cli_disconn() { (void) close(client_parm.admin_fd); (void) signal(SIGPIPE, opipe); return; } -kadm_cli_out(dat, dat_len, ret_dat, ret_siz) -u_char *dat; -int dat_len; -u_char **ret_dat; -int *ret_siz; +int kadm_cli_out(u_char *dat, int dat_len, u_char **ret_dat, int *ret_siz) { - extern int errno; u_short dlen; int retval; @@ -474,8 +460,8 @@ int *ret_siz; if (krb_net_write(client_parm.admin_fd, (char *) dat, dat_len) < 0) return (errno); /* XXX */ - if (retval = krb_net_read(client_parm.admin_fd, (char *) &dlen, - sizeof(u_short)) != sizeof(u_short)) { + if ((retval = krb_net_read(client_parm.admin_fd, (char *) &dlen, + sizeof(u_short))) != sizeof(u_short)) { if (retval < 0) return(errno); /* XXX */ else @@ -487,8 +473,8 @@ int *ret_siz; if (!*ret_dat) return(KADM_NOMEM); - if (retval = krb_net_read(client_parm.admin_fd, (char *) *ret_dat, - (int) dlen) != dlen) { + if ((retval = krb_net_read(client_parm.admin_fd, (char *) *ret_dat, + (int) dlen)) != dlen) { if (retval < 0) return(errno); /* XXX */ else |