diff options
author | Mitchell Berger <mitchb@mit.edu> | 2001-06-21 11:17:00 +0000 |
---|---|---|
committer | Mitchell Berger <mitchb@mit.edu> | 2001-06-21 11:17:00 +0000 |
commit | 0814508002f5f8add4919b45156ded196a2d6627 (patch) | |
tree | 8e7c12244557bb159487c83f281503a11e43a00e | |
parent | 3c42ac668e07f5f61738501c0d00baf9fcdc7e04 (diff) | |
download | krb5-incremental-propagation.zip krb5-incremental-propagation.tar.gz krb5-incremental-propagation.tar.bz2 |
Taking changes from the trunk between tags incremental-propagation-branchpointincremental-propagation
and update-mainline-to-incprop-20010621.
git-svn-id: svn://anonsvn.mit.edu/krb5/branches/incremental-propagation-branch@13435 dc483132-0cff-0310-8789-dd5450dbe970
31 files changed, 553 insertions, 522 deletions
diff --git a/src/appl/bsd/ChangeLog b/src/appl/bsd/ChangeLog index c416234..c3a2cb5 100644 --- a/src/appl/bsd/ChangeLog +++ b/src/appl/bsd/ChangeLog @@ -1,3 +1,8 @@ +2001-06-20 Ezra Peisach <epeisach@mit.edu> + + * kcmd.c: Get rid of prototypes for krb5_write_message(), + krb5_net_write(), and krb5_net_read(). They are in krb5.h now. + 2001-06-18 Ezra Peisach <epeisach@mit.edu> * krcp.c (sink): Cast argument to isdigit() to int. diff --git a/src/appl/bsd/kcmd.c b/src/appl/bsd/kcmd.c index 903471f..7ffd49c 100644 --- a/src/appl/bsd/kcmd.c +++ b/src/appl/bsd/kcmd.c @@ -139,12 +139,6 @@ static int right_justify; #endif static int do_lencheck; -/* XXX: These should be internal to krb5 library, or declared in krb5.h. */ -extern krb5_error_code krb5_write_message (krb5_context, krb5_pointer, - krb5_data *); -extern int krb5_net_read (krb5_context, int , char *, int); -extern int krb5_net_write (krb5_context, int , const char *, int); -/* XXX: And these should be declared in krb.h, or private. */ #ifdef KRB5_KRB4_COMPAT extern int krb_sendauth(long options, int fd, KTEXT ticket, diff --git a/src/include/ChangeLog b/src/include/ChangeLog index 8858905..6455c79 100644 --- a/src/include/ChangeLog +++ b/src/include/ChangeLog @@ -1,3 +1,9 @@ +2001-06-20 Ezra Peisach <epeisach@mit.edu> + + * krb5.hin: Move prototypes for krb5_net_read() and + krb5_net_write() here. + * k5-int.h: From here. + 2001-06-19 Ken Raeburn <raeburn@mit.edu> * k5-int.h (struct addrlist): New type. diff --git a/src/include/k5-int.h b/src/include/k5-int.h index a58d282..53aca12 100644 --- a/src/include/k5-int.h +++ b/src/include/k5-int.h @@ -528,8 +528,6 @@ extern char *strdup (const char *); /* libos.spec */ krb5_error_code krb5_lock_file (krb5_context, int, int); krb5_error_code krb5_unlock_file (krb5_context, int); -int krb5_net_read (krb5_context, int , char *, int); -int krb5_net_write (krb5_context, int , const char *, int); krb5_error_code krb5_sendto_kdc (krb5_context, const krb5_data *, const krb5_data *, krb5_data *, int); krb5_error_code krb5_get_krbhst (krb5_context, const krb5_data *, char *** ); diff --git a/src/include/kerberosIV/ChangeLog b/src/include/kerberosIV/ChangeLog index 88a9127..5eaf2dd 100644 --- a/src/include/kerberosIV/ChangeLog +++ b/src/include/kerberosIV/ChangeLog @@ -1,3 +1,9 @@ +2001-06-20 Ezra Peisach <epeisach@mit.edu> + + * krb.h: Add prototype for krb__get_srvtabname() which is invoked + in place of KEYFILE. + Add prototypes for krb_kntoln(), k_isinst(), k_isname(), k_isrealm(). + 2001-06-11 Ezra Peisach <epeisach@mit.edu> * krb.h: Add prototype for krb_sendauth(). diff --git a/src/include/kerberosIV/krb.h b/src/include/kerberosIV/krb.h index e38bfc7..b665f0b 100644 --- a/src/include/kerberosIV/krb.h +++ b/src/include/kerberosIV/krb.h @@ -464,6 +464,14 @@ KRB5_DLLIMP int KRB5_CALLCONV krb_in_tkt KRB5_DLLIMP int KRB5_CALLCONV kname_parse (char FAR *name, char FAR *inst, char FAR *realm, char FAR *fullname); +KRB5_DLLIMP int KRB5_CALLCONV k_isname + (char FAR *); +KRB5_DLLIMP int KRB5_CALLCONV k_isinst + (char FAR *); +KRB5_DLLIMP int KRB5_CALLCONV k_isrealm + (char FAR *); + + /* kuserok.c */ KRB5_DLLIMP int KRB5_CALLCONV kuserok (AUTH_DAT FAR *kdata, char FAR *luser); @@ -633,6 +641,10 @@ extern int krb_create_ticket(KTEXT tkt, unsigned int flags, char *pname, char *session, int life, long time_sec, char *sname, char *sinstance, C_Block key); +extern char * krb__get_srvtabname(const char *); + +extern int krb_kntoln(AUTH_DAT *, char *); + #ifdef KRB5_GENERAL__ extern int krb_cr_tkt_krb5(KTEXT tkt, unsigned int flags, char *pname, char *pinstance, char *prealm, long paddress, diff --git a/src/include/krb5.hin b/src/include/krb5.hin index b0fbab4..140f3a3 100644 --- a/src/include/krb5.hin +++ b/src/include/krb5.hin @@ -2081,6 +2081,8 @@ KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_auth_con_getremotesubkey krb5_error_code krb5_read_message (krb5_context, krb5_pointer, krb5_data *); krb5_error_code krb5_write_message (krb5_context, krb5_pointer, krb5_data *); +int krb5_net_read (krb5_context, int , char *, int); +int krb5_net_write (krb5_context, int , const char *, int); KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_read_password (krb5_context, diff --git a/src/krb524/ChangeLog b/src/krb524/ChangeLog index daa28c7..1b47629 100644 --- a/src/krb524/ChangeLog +++ b/src/krb524/ChangeLog @@ -1,3 +1,10 @@ +2001-06-20 Ezra Peisach <epeisach@mit.edu> + + * krb524d.c: Include <krb5/adm_proto.h> for krb5_log_init() + prototype. + (cleanup_and_exit) Conditionalize krb5_kt_close on keytab being + non-null. + 2001-06-20 Mitchell Berger <mitchb@mit.edu> * krb524d.c: Call krb5_klog_init before the first point where the diff --git a/src/krb524/krb524d.c b/src/krb524/krb524d.c index f1d0822..03c63a5 100644 --- a/src/krb524/krb524d.c +++ b/src/krb524/krb524d.c @@ -22,6 +22,7 @@ #include <krb5.h> #include <kadm5/admin.h> +#include <krb5/adm_proto.h> #include <com_err.h> #include <stdarg.h> @@ -223,7 +224,7 @@ void cleanup_and_exit(ret, context) if (use_master && handle) { (void) kadm5_destroy(handle); } - if (use_keytab) krb5_kt_close(context, kt); + if (use_keytab && kt) krb5_kt_close(context, kt); krb5_free_context(context); exit(ret); } diff --git a/src/lib/crypto/des/ChangeLog b/src/lib/crypto/des/ChangeLog index 243993a..6574269 100644 --- a/src/lib/crypto/des/ChangeLog +++ b/src/lib/crypto/des/ChangeLog @@ -1,3 +1,9 @@ +2001-06-20 Ken Raeburn <raeburn@mit.edu> + + * string2key.c (mit_des_string_to_key_int): Construct a krb5_data + object with proper length for the AFS case (indicated by a -1 salt + length on input). + 2001-06-12 Ezra Peisach <epeisach@mit.edu> * destest.c: main returns int instead of void. Add "const" to diff --git a/src/lib/crypto/des/string2key.c b/src/lib/crypto/des/string2key.c index 45a8500..65f4014 100644 --- a/src/lib/crypto/des/string2key.c +++ b/src/lib/crypto/des/string2key.c @@ -71,9 +71,9 @@ krb5_error_code mit_des_string_to_key_int (keyblock, data, salt) -krb5_keyblock FAR * keyblock; -const krb5_data FAR * data; -const krb5_data FAR * salt; + krb5_keyblock FAR * keyblock; + const krb5_data FAR * data; + const krb5_data FAR * salt; { register krb5_octet *str, *copystr; register krb5_octet *key; @@ -97,13 +97,15 @@ const krb5_data FAR * salt; key = keyblock->contents; if (salt) { - if (salt->length == SALT_TYPE_AFS_LENGTH || salt->length == (unsigned) -1) { - /* cheat and do AFS string2key instead */ - return mit_afs_string_to_key (keyblock, data, salt); - } else - length = data->length + salt->length; - } - else + if (salt->length == SALT_TYPE_AFS_LENGTH || salt->length == (unsigned) -1) { + krb5_data salt2; + salt2.data = salt->data; + salt2.length = strlen (salt2.data); + /* cheat and do AFS string2key instead */ + return mit_afs_string_to_key (keyblock, data, &salt2); + } else + length = data->length + salt->length; + } else length = data->length; copystr = malloc((size_t) length); diff --git a/src/lib/gssapi/krb5/ChangeLog b/src/lib/gssapi/krb5/ChangeLog index d6c39bb..0d57d5c 100644 --- a/src/lib/gssapi/krb5/ChangeLog +++ b/src/lib/gssapi/krb5/ChangeLog @@ -1,3 +1,8 @@ +2001-06-20 Ezra Peisach <epeisach@mit.edu> + + * acquire_cred.c (acquire_init_cred): Include "k5-int.h" for + krb5int-cc_default() prototype. + 2001-06-18 Ezra Peisach <epeisach@mit.edu> * accept_sec_context.c acquire_cred.c import_sec_context.c diff --git a/src/lib/gssapi/krb5/acquire_cred.c b/src/lib/gssapi/krb5/acquire_cred.c index 91439f5..daa900a 100644 --- a/src/lib/gssapi/krb5/acquire_cred.c +++ b/src/lib/gssapi/krb5/acquire_cred.c @@ -70,6 +70,7 @@ * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ +#include "k5-int.h" #include "gssapiP_krb5.h" #ifdef HAVE_STRING_H #include <string.h> diff --git a/src/lib/kadm5/logger.c b/src/lib/kadm5/logger.c index 49718c8..d163544 100644 --- a/src/lib/kadm5/logger.c +++ b/src/lib/kadm5/logger.c @@ -513,89 +513,73 @@ krb5_klog_init(kcontext, ename, whoami, do_com_err) * If there is a facility present, then parse that. */ if (cp2) { - if (!strcasecmp(cp2, "AUTH")) { - log_control.log_entries[i].lsu_facility = LOG_AUTH; - } + const struct { + const char *name; + int value; + } facilities[] = { + { "AUTH", LOG_AUTH }, +#ifdef LOG_AUTHPRIV + { "AUTHPRIV", LOG_AUTHPRIV }, +#endif /* LOG_AUTHPRIV */ #ifdef LOG_KERN - else if (!strcasecmp(cp2, "KERN")) { - log_control.log_entries[i].lsu_facility = LOG_KERN; - } + { "KERN", LOG_KERN }, #endif /* LOG_KERN */ #ifdef LOG_USER - else if (!strcasecmp(cp2, "USER")) { - log_control.log_entries[i].lsu_facility = LOG_USER; - } + { "USER", LOG_USER }, #endif /* LOG_USER */ #ifdef LOG_MAIL - else if (!strcasecmp(cp2, "MAIL")) { - log_control.log_entries[i].lsu_facility = LOG_MAIL; - } + { "MAIL", LOG_MAIL }, #endif /* LOG_MAIL */ #ifdef LOG_DAEMON - else if (!strcasecmp(cp2, "DAEMON")) { - log_control.log_entries[i].lsu_facility = LOG_DAEMON; - } + { "DAEMON", LOG_DAEMON }, #endif /* LOG_DAEMON */ +#ifdef LOG_FTP + { "FTP", LOG_FTP }, +#endif /* LOG_FTP */ #ifdef LOG_LPR - else if (!strcasecmp(cp2, "LPR")) { - log_control.log_entries[i].lsu_facility = LOG_LPR; - } + { "LPR", LOG_LPR }, #endif /* LOG_LPR */ #ifdef LOG_NEWS - else if (!strcasecmp(cp2, "NEWS")) { - log_control.log_entries[i].lsu_facility = LOG_NEWS; - } + { "NEWS", LOG_NEWS }, #endif /* LOG_NEWS */ #ifdef LOG_UUCP - else if (!strcasecmp(cp2, "UUCP")) { - log_control.log_entries[i].lsu_facility = LOG_UUCP; - } + { "UUCP", LOG_UUCP }, #endif /* LOG_UUCP */ #ifdef LOG_CRON - else if (!strcasecmp(cp2, "CRON")) { - log_control.log_entries[i].lsu_facility = LOG_CRON; - } + { "CRON", LOG_CRON }, #endif /* LOG_CRON */ #ifdef LOG_LOCAL0 - else if (!strcasecmp(cp2, "LOCAL0")) { - log_control.log_entries[i].lsu_facility = LOG_LOCAL0; - } + { "LOCAL0", LOG_LOCAL0 }, #endif /* LOG_LOCAL0 */ #ifdef LOG_LOCAL1 - else if (!strcasecmp(cp2, "LOCAL1")) { - log_control.log_entries[i].lsu_facility = LOG_LOCAL1; - } + { "LOCAL1", LOG_LOCAL1 }, #endif /* LOG_LOCAL1 */ #ifdef LOG_LOCAL2 - else if (!strcasecmp(cp2, "LOCAL2")) { - log_control.log_entries[i].lsu_facility = LOG_LOCAL2; - } + { "LOCAL2", LOG_LOCAL2 }, #endif /* LOG_LOCAL2 */ #ifdef LOG_LOCAL3 - else if (!strcasecmp(cp2, "LOCAL3")) { - log_control.log_entries[i].lsu_facility = LOG_LOCAL3; - } + { "LOCAL3", LOG_LOCAL3 }, #endif /* LOG_LOCAL3 */ #ifdef LOG_LOCAL4 - else if (!strcasecmp(cp2, "LOCAL4")) { - log_control.log_entries[i].lsu_facility = LOG_LOCAL4; - } + { "LOCAL4", LOG_LOCAL4 }, #endif /* LOG_LOCAL4 */ #ifdef LOG_LOCAL5 - else if (!strcasecmp(cp2, "LOCAL5")) { - log_control.log_entries[i].lsu_facility = LOG_LOCAL5; - } + { "LOCAL5", LOG_LOCAL5 }, #endif /* LOG_LOCAL5 */ #ifdef LOG_LOCAL6 - else if (!strcasecmp(cp2, "LOCAL6")) { - log_control.log_entries[i].lsu_facility = LOG_LOCAL6; - } + { "LOCAL6", LOG_LOCAL6 }, #endif /* LOG_LOCAL6 */ #ifdef LOG_LOCAL7 - else if (!strcasecmp(cp2, "LOCAL7")) { - log_control.log_entries[i].lsu_facility = LOG_LOCAL7; - } + { "LOCAL7", LOG_LOCAL7 }, #endif /* LOG_LOCAL7 */ + }; + int j; + + for (j = 0; j < sizeof(facilities)/sizeof(facilities[0]); j++) + if (!strcasecmp(cp2, facilities[j].name)) { + log_control.log_entries[i].lsu_facility = facilities[j].value; + break; + } cp2--; *cp2 = savec; } diff --git a/src/lib/krb4/ChangeLog b/src/lib/krb4/ChangeLog index 17c0be0..cb2a0a7 100644 --- a/src/lib/krb4/ChangeLog +++ b/src/lib/krb4/ChangeLog @@ -1,3 +1,17 @@ + +2001-06-20 Ezra Peisach <epeisach@mit.edu> + + * kname_parse.c (k_isrealm, k_isname, k_isrealm): Add + KRB5_DLLIMP/KRB5_CALLCONV definitions for function with exported + prototype in krb.h. + + * g_cnffile.c (krb__get_srvtabname, krb__v5_get_file): Declare + argument as const. + + * g_svc_in_tkt.c, put_svc_key.c, rd_req.c, rd_svc_key.c: Get rid + of krb__get_srvtabname() prototype - in krb.h now. + + 2001-06-18 Ezra Peisach <epeisach@mit.edu> * kparse.c (strutol): Cast argument to isupper()/tolower() to int. diff --git a/src/lib/krb4/g_cnffile.c b/src/lib/krb4/g_cnffile.c index 9b7b070..83654b8 100644 --- a/src/lib/krb4/g_cnffile.c +++ b/src/lib/krb4/g_cnffile.c @@ -23,7 +23,7 @@ krb5_context krb5__krb4_context = 0; static FILE* krb__v5_get_file(s) - char *s; + const char *s; { FILE *cnffile = 0; const char* names[3]; @@ -50,7 +50,7 @@ krb__v5_get_file(s) char * krb__get_srvtabname(default_srvtabname) - char *default_srvtabname; + const char *default_srvtabname; { const char* names[3]; char **full_name = 0, **cpp; diff --git a/src/lib/krb4/g_svc_in_tkt.c b/src/lib/krb4/g_svc_in_tkt.c index afee27a..7d4baf6 100644 --- a/src/lib/krb4/g_svc_in_tkt.c +++ b/src/lib/krb4/g_svc_in_tkt.c @@ -16,8 +16,6 @@ #define NULL 0 #endif -extern char *krb__get_srvtabname(); - /* * This file contains two routines: srvtab_to_key(), which gets * a server's key from a srvtab file, and krb_get_svc_in_tkt() which diff --git a/src/lib/krb4/kname_parse.c b/src/lib/krb4/kname_parse.c index 2c310c6..18da8ae 100644 --- a/src/lib/krb4/kname_parse.c +++ b/src/lib/krb4/kname_parse.c @@ -174,9 +174,9 @@ kname_parse(np, ip, rp, fullname) * Kerberos name; returns 0 if it's not. */ -int +KRB5_DLLIMP int KRB5_CALLCONV k_isname(s) - char *s; + char FAR *s; { register char c; int backslash = 0; @@ -213,9 +213,9 @@ k_isname(s) * We now allow periods in instance names -- they are unambiguous. */ -int +KRB5_DLLIMP int KRB5_CALLCONV k_isinst(s) - char *s; + char FAR *s; { register char c; int backslash = 0; @@ -244,9 +244,9 @@ k_isinst(s) * Kerberos realm; returns 0 if it's not. */ -int +KRB5_DLLIMP int KRB5_CALLCONV k_isrealm(s) - char *s; + char FAR *s; { register char c; int backslash = 0; diff --git a/src/lib/krb4/put_svc_key.c b/src/lib/krb4/put_svc_key.c index e2eb24d..a926454 100644 --- a/src/lib/krb4/put_svc_key.c +++ b/src/lib/krb4/put_svc_key.c @@ -32,8 +32,6 @@ #include <unistd.h> #endif -extern char *krb__get_srvtabname(); - #define KEYSZ sizeof(C_Block) /* strict put_svc_key. The srvtab must already exist; diff --git a/src/lib/krb4/rd_req.c b/src/lib/krb4/rd_req.c index 89be3b5..e8119b8 100644 --- a/src/lib/krb4/rd_req.c +++ b/src/lib/krb4/rd_req.c @@ -33,8 +33,6 @@ extern int krb_ap_req_debug; -extern char *krb__get_srvtabname(); - /* declared in krb.h */ int krb_ignore_ip_address = 0; diff --git a/src/lib/krb4/rd_svc_key.c b/src/lib/krb4/rd_svc_key.c index 15d0f46..f59aac6 100644 --- a/src/lib/krb4/rd_svc_key.c +++ b/src/lib/krb4/rd_svc_key.c @@ -18,8 +18,6 @@ #include <krb54proto.h> #include "prot.h" -extern char *krb__get_srvtabname(); - /* * The private keys for servers on a given host are stored in a * "srvtab" file (typically "/etc/srvtab"). This routine extracts diff --git a/src/lib/krb5/krb/ChangeLog b/src/lib/krb5/krb/ChangeLog index 4c86bb1..c03f71d 100644 --- a/src/lib/krb5/krb/ChangeLog +++ b/src/lib/krb5/krb/ChangeLog @@ -1,3 +1,8 @@ +2001-06-20 Ezra Peisach <epeisach@mit.edu> + + * Makefile.in (check-unix): Add $(RUN_SETUP) before invocation of + transit-tests for shared library environment variables. + 2001-06-19 Ken Raeburn <raeburn@mit.edu> * chk_trans.c: Reimplemented from scratch. diff --git a/src/lib/krb5/krb/Makefile.in b/src/lib/krb5/krb/Makefile.in index c07bd47..3096d6a 100644 --- a/src/lib/krb5/krb/Makefile.in +++ b/src/lib/krb5/krb/Makefile.in @@ -340,7 +340,7 @@ check-unix:: $(TEST_PROGS) KRB5_CONFIG=$(srcdir)/t_krb5.conf ; export KRB5_CONFIG ;\ $(RUN_SETUP) ./t_ser ./t_deltat - sh $(srcdir)/transit-tests + $(RUN_SETUP) sh $(srcdir)/transit-tests clean:: $(RM) $(OUTPRE)t_walk_rtree$(EXEEXT) $(OUTPRE)t_walk_rtree.$(OBJEXT) \ diff --git a/src/lib/krb5/os/ChangeLog b/src/lib/krb5/os/ChangeLog index 137ef76..e20c549 100644 --- a/src/lib/krb5/os/ChangeLog +++ b/src/lib/krb5/os/ChangeLog @@ -1,3 +1,8 @@ +2001-06-20 Ezra Peisach <epeisach@mit.edu> + + * t_std_conf.c (test_locate_kdc): Update to new krb5_locate_kdc + interface. + 2001-06-19 Ken Raeburn <raeburn@mit.edu> * locate_kdc.c (struct addrlist, ADDRLIST_INIT): Moved to @@ -19,8 +24,6 @@ * os-proto.h (krb5_locate_kdc): Update prototype. - * t_std_conf.c (test_locate_kdc): Update tests for new API. - 2001-06-12 Ezra Peisach <epeisach@mit.edu> * sn2princ.c, hst_realm.c, an_to_ln.c: Cast argument to diff --git a/src/lib/krb5/os/t_std_conf.c b/src/lib/krb5/os/t_std_conf.c index dcd309f..047eca9 100644 --- a/src/lib/krb5/os/t_std_conf.c +++ b/src/lib/krb5/os/t_std_conf.c @@ -107,7 +107,7 @@ static void test_locate_kdc(ctx, realm) krb5_context ctx; char *realm; { - struct sockaddr **addrs; + struct addrlist addrs; struct sockaddr_in *s_sin; int i, naddrs; int get_masters=0; @@ -116,19 +116,18 @@ static void test_locate_kdc(ctx, realm) rlm.data = realm; rlm.length = strlen(realm); - retval = krb5_locate_kdc(ctx, &rlm, &addrs, &naddrs, - get_masters); + retval = krb5_locate_kdc(ctx, &rlm, &addrs, get_masters); if (retval) { com_err("krb5_locate_kdc", retval, 0); return; } printf("krb_locate_kdc(%s) returned:", realm); - for (i=0; i < naddrs; i++) { - s_sin = (struct sockaddr_in *) addrs[i]; + for (i=0; i < addrs.naddrs; i++) { + s_sin = (struct sockaddr_in *) addrs.addrs[i]; printf(" %s/%d", inet_ntoa(s_sin->sin_addr), ntohs(s_sin->sin_port)); } - free(addrs); + krb5int_free_addrlist(&addrs); printf("\n"); } diff --git a/src/lib/krb5/rcache/ChangeLog b/src/lib/krb5/rcache/ChangeLog index 622d4fe..409315b 100644 --- a/src/lib/krb5/rcache/ChangeLog +++ b/src/lib/krb5/rcache/ChangeLog @@ -1,3 +1,11 @@ +2001-06-20 Danilo Almeida <dalmeida@mit.edu> + + * rc_dfl.c, rc_io.c: More compliance with coding standards: use + ANSI function declarations, use curly braces to fix up #ifdef + reindenting under Emacs, reindent code, strip trailing whitespace, + wrap lines, fix commans. Not finished: fix indenting of curly + braces in control structures. + 2001-01-23 Tom Yu <tlyu@mit.edu> * rc_io.c (getdir): Subtract one from dirlen, since sizeof diff --git a/src/lib/krb5/rcache/rc_dfl.c b/src/lib/krb5/rcache/rc_dfl.c index cc046e7..596be40 100644 --- a/src/lib/krb5/rcache/rc_dfl.c +++ b/src/lib/krb5/rcache/rc_dfl.c @@ -17,19 +17,19 @@ #include <k5-int.h> /* -If NOIOSTUFF is defined at compile time, dfl rcaches will be per-process. -*/ + * If NOIOSTUFF is defined at compile time, dfl rcaches will be per-process. + */ /* Local stuff: -static int hash(krb5_donot_replay *rep,int hsize) +static int hash(krb5_donot_replay *rep, int hsize) returns hash value of *rep, between 0 and hsize - 1 HASHSIZE size of hash table (constant), can be preset -static int cmp(krb5_donot_replay *old,krb5_donot_replay *new,krb5_deltat t) +static int cmp(krb5_donot_replay *old, krb5_donot_replay *new, krb5_deltat t) compare old and new; return CMP_REPLAY or CMP_HOHUM -static int alive (krb5_context, krb5_donot_replay *new,krb5_deltat t) +static int alive(krb5_context, krb5_donot_replay *new, krb5_deltat t) see if new is still alive; return CMP_EXPIRED or CMP_HOHUM CMP_MALLOC, CMP_EXPIRED, CMP_REPLAY, CMP_HOHUM return codes from cmp(), alive(), and store() @@ -37,7 +37,7 @@ struct dfl_data data stored in this cache type, namely "dfl" struct authlist multilinked list of reps -static int rc_store(context, krb5_rcache id,krb5_donot_replay *rep) +static int rc_store(context, krb5_rcache id, krb5_donot_replay *rep) store rep in cache id; return CMP_REPLAY if replay, else CMP_MALLOC/CMP_HOHUM */ @@ -49,24 +49,26 @@ static int rc_store(context, krb5_rcache id,krb5_donot_replay *rep) #ifndef EXCESSREPS #define EXCESSREPS 30 #endif -/* The rcache will be automatically expunged when the number of expired -krb5_donot_replays encountered incidentally in searching exceeds the number -of live krb5_donot_replays by EXCESSREPS. With the defaults here, a typical -cache might build up some 10K of expired krb5_donot_replays before an automatic -expunge, with the waste basically independent of the number of stores per -minute. - -The rcache will also automatically be expunged when it encounters more -than EXCESSREPS expired entries when recovering a cache in -dfl_recover. */ - -static int hash(rep, hsize) -krb5_donot_replay *rep; -int hsize; + +/* + * The rcache will be automatically expunged when the number of + * expired krb5_donot_replays encountered incidentally in searching + * exceeds the number of live krb5_donot_replays by EXCESSREPS. With + * the defaults here, a typical cache might build up some 10K of + * expired krb5_donot_replays before an automatic expunge, with the + * waste basically independent of the number of stores per minute. + * + * The rcache will also automatically be expunged when it encounters + * more than EXCESSREPS expired entries when recovering a cache in + * dfl_recover. + */ + +static int +hash(krb5_donot_replay *rep, int hsize) { - return (int) ((((rep->cusec + rep->ctime + *rep->server + *rep->client) - % hsize) + hsize) % hsize); - /* We take this opportunity to once again complain about C's idiotic %. */ + return (int) ((((rep->cusec + rep->ctime + *rep->server + *rep->client) + % hsize) + hsize) % hsize); + /* We take this opportunity to once again complain about C's idiotic %. */ } #define CMP_MALLOC -3 @@ -75,124 +77,114 @@ int hsize; #define CMP_HOHUM 0 /*ARGSUSED*/ -static int cmp(old, new, t) -krb5_donot_replay *old; -krb5_donot_replay *new; -krb5_deltat t; +static int +cmp(krb5_donot_replay *old, krb5_donot_replay *new, krb5_deltat t) { - if ((old->cusec == new->cusec) && /* most likely to distinguish */ - (old->ctime == new->ctime) && - (strcmp(old->client,new->client) == 0) && - (strcmp(old->server,new->server) == 0)) /* always true */ - return CMP_REPLAY; - return CMP_HOHUM; + if ((old->cusec == new->cusec) && /* most likely to distinguish */ + (old->ctime == new->ctime) && + (strcmp(old->client, new->client) == 0) && + (strcmp(old->server, new->server) == 0)) /* always true */ + return CMP_REPLAY; + return CMP_HOHUM; } -static int alive(context, new, t) - krb5_context context; - krb5_donot_replay *new; - krb5_deltat t; +static int +alive(krb5_context context, krb5_donot_replay *new, krb5_deltat t) { - krb5_int32 mytime; - - if (krb5_timeofday(context, &mytime)) - return CMP_HOHUM; /* who cares? */ - if (new->ctime + t < mytime) /* I hope we don't have to worry about overflow */ - return CMP_EXPIRED; - return CMP_HOHUM; + krb5_int32 mytime; + + if (krb5_timeofday(context, &mytime)) + return CMP_HOHUM; /* who cares? */ + /* I hope we don't have to worry about overflow */ + if (new->ctime + t < mytime) + return CMP_EXPIRED; + return CMP_HOHUM; } struct dfl_data - { - char *name; - krb5_deltat lifespan; - int hsize; - int numhits; - int nummisses; - struct authlist **h; - struct authlist *a; +{ + char *name; + krb5_deltat lifespan; + int hsize; + int numhits; + int nummisses; + struct authlist **h; + struct authlist *a; #ifndef NOIOSTUFF - krb5_rc_iostuff d; + krb5_rc_iostuff d; #endif - char recovering; - } -; + char recovering; +}; struct authlist - { - krb5_donot_replay rep; - struct authlist *na; - struct authlist *nh; - } -; +{ + krb5_donot_replay rep; + struct authlist *na; + struct authlist *nh; +}; /* of course, list is backwards from file */ /* hash could be forwards since we have to search on match, but naaaah */ -static int rc_store(context, id, rep) - krb5_context context; - krb5_rcache id; - krb5_donot_replay *rep; +static int +rc_store(krb5_context context, krb5_rcache id, krb5_donot_replay *rep) { - struct dfl_data *t = (struct dfl_data *)id->data; - int rephash; - struct authlist *ta; - - rephash = hash(rep,t->hsize); + struct dfl_data *t = (struct dfl_data *)id->data; + int rephash; + struct authlist *ta; + + rephash = hash(rep, t->hsize); + + for (ta = t->h[rephash]; ta; ta = ta->nh) { + switch(cmp(&ta->rep, rep, t->lifespan)) + { + case CMP_REPLAY: + return CMP_REPLAY; + case CMP_HOHUM: + if (alive(context, &ta->rep, t->lifespan) == CMP_EXPIRED) + t->nummisses++; + else + t->numhits++; + break; + default: + ; /* wtf? */ + } + } - for (ta = t->h[rephash];ta;ta = ta->nh) - switch(cmp(&ta->rep,rep,t->lifespan)) - { - case CMP_REPLAY: return CMP_REPLAY; - case CMP_HOHUM: if (alive(context, &ta->rep,t->lifespan) == CMP_EXPIRED) - t->nummisses++; - else - t->numhits++; - break; - default: ; /* wtf? */ + if (!(ta = (struct authlist *) malloc(sizeof(struct authlist)))) + return CMP_MALLOC; + ta->na = t->a; t->a = ta; + ta->nh = t->h[rephash]; t->h[rephash] = ta; + ta->rep = *rep; + if (!(ta->rep.client = strdup(rep->client))) { + FREE(ta); + return CMP_MALLOC; + } + if (!(ta->rep.server = strdup(rep->server))) { + FREE(ta->rep.client); + FREE(ta); + return CMP_MALLOC; } - if (!(ta = (struct authlist *) malloc(sizeof(struct authlist)))) - return CMP_MALLOC; - ta->na = t->a; t->a = ta; - ta->nh = t->h[rephash]; t->h[rephash] = ta; - ta->rep = *rep; - if (!(ta->rep.client = strdup(rep->client))) { - FREE(ta); - return CMP_MALLOC; - } - if (!(ta->rep.server = strdup(rep->server))) { - FREE(ta->rep.client); - FREE(ta); - return CMP_MALLOC; - } - - return CMP_HOHUM; + return CMP_HOHUM; } char * KRB5_CALLCONV -krb5_rc_dfl_get_name(context, id) - krb5_context context; - krb5_rcache id; +krb5_rc_dfl_get_name(krb5_context context, krb5_rcache id) { - return ((struct dfl_data *) (id->data))->name; + return ((struct dfl_data *) (id->data))->name; } krb5_error_code KRB5_CALLCONV -krb5_rc_dfl_get_span(context, id, lifespan) - krb5_context context; - krb5_rcache id; - krb5_deltat *lifespan; +krb5_rc_dfl_get_span(krb5_context context, krb5_rcache id, + krb5_deltat *lifespan) { - *lifespan = ((struct dfl_data *) (id->data))->lifespan; - return 0; + *lifespan = ((struct dfl_data *) (id->data))->lifespan; + return 0; } krb5_error_code KRB5_CALLCONV -krb5_rc_dfl_init(context, id, lifespan) - krb5_context context; -krb5_rcache id; -krb5_deltat lifespan; +krb5_rc_dfl_init(krb5_context context, krb5_rcache id, krb5_deltat lifespan) { struct dfl_data *t = (struct dfl_data *)id->data; krb5_error_code retval; @@ -200,7 +192,7 @@ krb5_deltat lifespan; t->lifespan = lifespan ? lifespan : context->clockskew; /* default to clockskew from the context */ #ifndef NOIOSTUFF - if ((retval = krb5_rc_io_creat(context, &t->d,&t->name))) + if ((retval = krb5_rc_io_creat(context, &t->d, &t->name))) return retval; if ((krb5_rc_io_write(context, &t->d, (krb5_pointer) &t->lifespan, sizeof(t->lifespan)) @@ -210,35 +202,32 @@ krb5_deltat lifespan; return 0; } -krb5_error_code krb5_rc_dfl_close_no_free(context, id) - krb5_context context; - krb5_rcache id; +krb5_error_code +krb5_rc_dfl_close_no_free(krb5_context context, krb5_rcache id) { - struct dfl_data *t = (struct dfl_data *)id->data; - struct authlist *q; - - FREE(t->h); - if (t->name) - FREE(t->name); - while ((q = t->a)) - { - t->a = q->na; - FREE(q->rep.client); - FREE(q->rep.server); - FREE(q); - } + struct dfl_data *t = (struct dfl_data *)id->data; + struct authlist *q; + + FREE(t->h); + if (t->name) + FREE(t->name); + while ((q = t->a)) + { + t->a = q->na; + FREE(q->rep.client); + FREE(q->rep.server); + FREE(q); + } #ifndef NOIOSTUFF - if (t->d.fd >= 0) - (void) krb5_rc_io_close(context, &t->d); + if (t->d.fd >= 0) + (void) krb5_rc_io_close(context, &t->d); #endif - FREE(t); - return 0; + FREE(t); + return 0; } krb5_error_code KRB5_CALLCONV -krb5_rc_dfl_close(context, id) - krb5_context context; - krb5_rcache id; +krb5_rc_dfl_close(krb5_context context, krb5_rcache id) { krb5_rc_dfl_close_no_free(context, id); free(id); @@ -246,22 +235,17 @@ krb5_rc_dfl_close(context, id) } krb5_error_code KRB5_CALLCONV -krb5_rc_dfl_destroy(context, id) - krb5_context context; -krb5_rcache id; +krb5_rc_dfl_destroy(krb5_context context, krb5_rcache id) { #ifndef NOIOSTUFF - if (krb5_rc_io_destroy(context, &((struct dfl_data *) (id->data))->d)) - return KRB5_RC_IO; + if (krb5_rc_io_destroy(context, &((struct dfl_data *) (id->data))->d)) + return KRB5_RC_IO; #endif - return krb5_rc_dfl_close(context, id); + return krb5_rc_dfl_close(context, id); } krb5_error_code KRB5_CALLCONV -krb5_rc_dfl_resolve(context, id, name) - krb5_context context; - krb5_rcache id; - char *name; +krb5_rc_dfl_resolve(krb5_context context, krb5_rcache id, char *name) { struct dfl_data *t = 0; krb5_error_code retval; @@ -294,7 +278,7 @@ krb5_rc_dfl_resolve(context, id, name) #endif t->recovering = 0; return 0; - + cleanup: if (t) { if (t->name) @@ -306,14 +290,13 @@ cleanup: return retval; } -void krb5_rc_free_entry (context, rep) - krb5_context context; - krb5_donot_replay **rep; +void +krb5_rc_free_entry(krb5_context context, krb5_donot_replay **rep) { krb5_donot_replay *rp = *rep; - + *rep = NULL; - if (rp) + if (rp) { if (rp->client) free(rp->client); @@ -326,36 +309,34 @@ void krb5_rc_free_entry (context, rep) } } -static krb5_error_code krb5_rc_io_fetch(context, t, rep, maxlen) - krb5_context context; - struct dfl_data *t; - krb5_donot_replay *rep; - int maxlen; +static krb5_error_code +krb5_rc_io_fetch(krb5_context context, struct dfl_data *t, + krb5_donot_replay *rep, int maxlen) { int len; krb5_error_code retval; rep->client = rep->server = 0; - - retval = krb5_rc_io_read (context, &t->d, (krb5_pointer) &len, sizeof(len)); - if (retval) + + retval = krb5_rc_io_read(context, &t->d, (krb5_pointer) &len, sizeof(len)); + if (retval) return retval; - + if ((len <= 0) || (len >= maxlen)) return KRB5_RC_IO_EOF; rep->client = malloc (len); if (!rep->client) return KRB5_RC_MALLOC; - - retval = krb5_rc_io_read (context, &t->d, (krb5_pointer) rep->client, len); + + retval = krb5_rc_io_read(context, &t->d, (krb5_pointer) rep->client, len); if (retval) goto errout; - - retval = krb5_rc_io_read (context, &t->d, (krb5_pointer) &len, sizeof(len)); + + retval = krb5_rc_io_read(context, &t->d, (krb5_pointer) &len, sizeof(len)); if (retval) goto errout; - + if ((len <= 0) || (len >= maxlen)) { retval = KRB5_RC_IO_EOF; goto errout; @@ -366,21 +347,23 @@ static krb5_error_code krb5_rc_io_fetch(context, t, rep, maxlen) retval = KRB5_RC_MALLOC; goto errout; } - - retval = krb5_rc_io_read (context, &t->d, (krb5_pointer) rep->server, len); + + retval = krb5_rc_io_read(context, &t->d, (krb5_pointer) rep->server, len); if (retval) goto errout; - - retval = krb5_rc_io_read (context, &t->d, (krb5_pointer) &rep->cusec, sizeof(rep->cusec)); + + retval = krb5_rc_io_read(context, &t->d, (krb5_pointer) &rep->cusec, + sizeof(rep->cusec)); if (retval) goto errout; - - retval = krb5_rc_io_read (context, &t->d, (krb5_pointer) &rep->ctime, sizeof(rep->ctime)); + + retval = krb5_rc_io_read(context, &t->d, (krb5_pointer) &rep->ctime, + sizeof(rep->ctime)); if (retval) goto errout; return 0; - + errout: if (rep->client) krb5_xfree(rep->client); @@ -389,13 +372,11 @@ errout: rep->client = rep->server = 0; return retval; } - + krb5_error_code KRB5_CALLCONV -krb5_rc_dfl_recover(context, id) - krb5_context context; -krb5_rcache id; +krb5_rc_dfl_recover(krb5_context context, krb5_rcache id) { #ifdef NOIOSTUFF return KRB5_RC_NOIO; @@ -411,11 +392,12 @@ krb5_rcache id; return retval; t->recovering = 1; - + max_size = krb5_rc_io_size(context, &t->d); - + rep = NULL; - if (krb5_rc_io_read(context, &t->d,(krb5_pointer) &t->lifespan,sizeof(t->lifespan))) { + if (krb5_rc_io_read(context, &t->d, (krb5_pointer) &t->lifespan, + sizeof(t->lifespan))) { retval = KRB5_RC_IO; goto io_fail; } @@ -433,19 +415,19 @@ krb5_rcache id; retval = KRB5_RC_IO; goto io_fail; } - - retval = krb5_rc_io_fetch (context, t, rep, (int) max_size); + + retval = krb5_rc_io_fetch(context, t, rep, (int) max_size); if (retval == KRB5_RC_IO_EOF) break; else if (retval != 0) goto io_fail; - - if (alive(context, rep,t->lifespan) != CMP_EXPIRED) { + + if (alive(context, rep, t->lifespan) != CMP_EXPIRED) { if (rc_store(context, id, rep) == CMP_MALLOC) { retval = KRB5_RC_MALLOC; goto io_fail; - } + } } else { expired_entries++; } @@ -471,25 +453,23 @@ io_fail: retval = krb5_rc_dfl_expunge(context, id); t->recovering = 0; return retval; - + #endif } static krb5_error_code -krb5_rc_io_store (context, t, rep) - krb5_context context; - struct dfl_data *t; - krb5_donot_replay *rep; +krb5_rc_io_store(krb5_context context, struct dfl_data *t, + krb5_donot_replay *rep) { unsigned int clientlen, serverlen, len; char *buf, *ptr; krb5_error_code ret; - clientlen = strlen (rep->client) + 1; - serverlen = strlen (rep->server) + 1; + clientlen = strlen(rep->client) + 1; + serverlen = strlen(rep->server) + 1; len = sizeof(clientlen) + clientlen + sizeof(serverlen) + serverlen + sizeof(rep->cusec) + sizeof(rep->ctime); - buf = malloc (len); + buf = malloc(len); if (buf == 0) return KRB5_RC_MALLOC; ptr = buf; @@ -506,31 +486,28 @@ krb5_rc_io_store (context, t, rep) } krb5_error_code KRB5_CALLCONV -krb5_rc_dfl_store(context, id, rep) - krb5_context context; -krb5_rcache id; -krb5_donot_replay *rep; +krb5_rc_dfl_store(krb5_context context, krb5_rcache id, krb5_donot_replay *rep) { krb5_error_code ret; struct dfl_data *t = (struct dfl_data *)id->data; - switch(rc_store(context, id,rep)) { + switch(rc_store(context, id, rep)) { case CMP_MALLOC: - return KRB5_RC_MALLOC; + return KRB5_RC_MALLOC; case CMP_REPLAY: - return KRB5KRB_AP_ERR_REPEAT; + return KRB5KRB_AP_ERR_REPEAT; case 0: break; default: /* wtf? */ ; } #ifndef NOIOSTUFF - ret = krb5_rc_io_store (context, t, rep); + ret = krb5_rc_io_store(context, t, rep); if (ret) return ret; #endif - /* Shall we automatically expunge? */ - if (t->nummisses > t->numhits + EXCESSREPS) + /* Shall we automatically expunge? */ + if (t->nummisses > t->numhits + EXCESSREPS) { - return krb5_rc_dfl_expunge(context, id); + return krb5_rc_dfl_expunge(context, id); } #ifndef NOIOSTUFF else @@ -539,13 +516,11 @@ krb5_donot_replay *rep; return KRB5_RC_IO; } #endif - return 0; + return 0; } krb5_error_code KRB5_CALLCONV -krb5_rc_dfl_expunge(context, id) - krb5_context context; -krb5_rcache id; +krb5_rc_dfl_expunge(krb5_context context, krb5_rcache id) { struct dfl_data *t = (struct dfl_data *)id->data; #ifdef NOIOSTUFF @@ -555,24 +530,24 @@ krb5_rcache id; struct authlist *r; struct authlist *rt; - for (q = &t->a;*q;q = qt) { + for (q = &t->a; *q; q = qt) { qt = &(*q)->na; - if (alive(context, &(*q)->rep,t->lifespan) == CMP_EXPIRED) { + if (alive(context, &(*q)->rep, t->lifespan) == CMP_EXPIRED) { FREE((*q)->rep.client); FREE((*q)->rep.server); FREE(*q); *q = *qt; /* why doesn't this feel right? */ } } - for (i = 0;i < t->hsize;i++) + for (i = 0; i < t->hsize; i++) t->h[i] = (struct authlist *) 0; - for (r = t->a;r;r = r->na) { - i = hash(&r->rep,t->hsize); + for (r = t->a; r; r = r->na) { + i = hash(&r->rep, t->hsize); rt = t->h[i]; t->h[i] = r; r->nh = rt; } - + #else struct authlist *q; char *name; @@ -583,8 +558,8 @@ krb5_rcache id; if (! t->recovering) { name = t->name; t->name = 0; /* Clear name so it isn't freed */ - (void) krb5_rc_dfl_close_no_free(context, id); - retval = krb5_rc_dfl_resolve(context, id, name); + (void) krb5_rc_dfl_close_no_free(context, id); + retval = krb5_rc_dfl_resolve(context, id, name); free(name); if (retval) return retval; @@ -606,15 +581,15 @@ krb5_rcache id; retval = krb5_rc_initialize(context, tmp, lifespan); if (retval) return retval; - for (q = t->a;q;q = q->na) { - if (krb5_rc_io_store (context, (struct dfl_data *)tmp->data, &q->rep)) + for (q = t->a; q; q = q->na) { + if (krb5_rc_io_store(context, (struct dfl_data *)tmp->data, &q->rep)) return KRB5_RC_IO; } if (krb5_rc_io_sync(context, &t->d)) return KRB5_RC_IO; if (krb5_rc_io_move(context, &t->d, &((struct dfl_data *)tmp->data)->d)) return KRB5_RC_IO; - (void) krb5_rc_dfl_close(context, tmp); + (void) krb5_rc_dfl_close(context, tmp); #endif return 0; } diff --git a/src/lib/krb5/rcache/rc_io.c b/src/lib/krb5/rcache/rc_io.c index 8c7853e..e9d566b 100644 --- a/src/lib/krb5/rcache/rc_io.c +++ b/src/lib/krb5/rcache/rc_io.c @@ -19,7 +19,7 @@ #define KRB5_RC_VNO 0x0501 /* krb5, rcache v 1 */ #define NEED_SOCKETS -#define NEED_LOWLEVEL_IO +#define NEED_LOWLEVEL_IO #include <krb5.h> #include <stdio.h> /* for P_tmpdir */ @@ -36,7 +36,7 @@ #include <netinet/in.h> #endif #else - #error find some way to use net-byte-order file version numbers. +#error find some way to use net-byte-order file version numbers. #endif #ifndef HAVE_ERRNO @@ -55,195 +55,202 @@ static char *dir; #define GETDIR do { if (!dirlen) getdir(); } while(0) -static void getdir() +static void +getdir() { - if (!(dir = getenv("KRB5RCACHEDIR"))) + if (!(dir = getenv("KRB5RCACHEDIR"))) { #if defined(_MSDOS) || defined(_WIN32) - if (!(dir = getenv("TEMP"))) - if (!(dir = getenv("TMP"))) - dir = "C:"; + if (!(dir = getenv("TEMP"))) + if (!(dir = getenv("TMP"))) + dir = "C:"; #else - if (!(dir = getenv("TMPDIR"))) + if (!(dir = getenv("TMPDIR"))) { #ifdef RCTMPDIR - dir = RCTMPDIR; + dir = RCTMPDIR; #else - dir = "/tmp"; + dir = "/tmp"; #endif + } #endif - dirlen = strlen(dir) + sizeof(PATH_SEPARATOR) - 1; + } + dirlen = strlen(dir) + sizeof(PATH_SEPARATOR) - 1; } -krb5_error_code krb5_rc_io_creat (context, d, fn) - krb5_context context; - krb5_rc_iostuff *d; - char **fn; +krb5_error_code +krb5_rc_io_creat(krb5_context context, krb5_rc_iostuff *d, char **fn) { - char *c; - krb5_int16 rc_vno = htons(KRB5_RC_VNO); - krb5_error_code retval; - - GETDIR; - if (fn && *fn) - { - if (!(d->fn = malloc(strlen(*fn) + dirlen + 1))) - return KRB5_RC_IO_MALLOC; - (void) strcpy(d->fn,dir); - (void) strcat(d->fn,PATH_SEPARATOR); - (void) strcat(d->fn,*fn); - d->fd = THREEPARAMOPEN(d->fn,O_WRONLY | O_CREAT | O_TRUNC | O_EXCL | O_BINARY,0600); - } - else - { - /* %d is max 11 digits (-, 10 digits of 32-bit number) - * 11 + /krb5_RC + aaa = 24, +6 for slop */ - if (!(d->fn = malloc(30 + dirlen))) - return KRB5_RC_IO_MALLOC; - if (fn) - if (!(*fn = malloc(35))) - { FREE(d->fn); return KRB5_RC_IO_MALLOC; } - (void) sprintf(d->fn,"%s%skrb5_RC%d",dir,PATH_SEPARATOR, (int) UNIQUE); - c = d->fn + strlen(d->fn); - (void) strcpy(c,"aaa"); - while ((d->fd = THREEPARAMOPEN(d->fn,O_WRONLY|O_CREAT|O_TRUNC|O_EXCL|O_BINARY,0600)) == -1) + char *c; + krb5_int16 rc_vno = htons(KRB5_RC_VNO); + krb5_error_code retval; + + GETDIR; + if (fn && *fn) { - if ((c[2]++) == 'z') - { - c[2] = 'a'; - if ((c[1]++) == 'z') - { - c[1] = 'a'; - if ((c[0]++) == 'z') - break; /* sigh */ - } - } + if (!(d->fn = malloc(strlen(*fn) + dirlen + 1))) + return KRB5_RC_IO_MALLOC; + (void) strcpy(d->fn, dir); + (void) strcat(d->fn, PATH_SEPARATOR); + (void) strcat(d->fn, *fn); + d->fd = THREEPARAMOPEN(d->fn, O_WRONLY | O_CREAT | O_TRUNC | O_EXCL | + O_BINARY, 0600); } - if (fn) - (void) strcpy(*fn,d->fn + dirlen); - } - if (d->fd == -1) + else { - switch(errno) + /* %d is max 11 digits (-, 10 digits of 32-bit number) + * 11 + /krb5_RC + aaa = 24, +6 for slop */ + if (!(d->fn = malloc(30 + dirlen))) + return KRB5_RC_IO_MALLOC; + if (fn) + if (!(*fn = malloc(35))) { + FREE(d->fn); + return KRB5_RC_IO_MALLOC; + } + (void) sprintf(d->fn, "%s%skrb5_RC%d", dir, PATH_SEPARATOR, + (int) UNIQUE); + c = d->fn + strlen(d->fn); + (void) strcpy(c, "aaa"); + while ((d->fd = THREEPARAMOPEN(d->fn, O_WRONLY | O_CREAT | O_TRUNC | + O_EXCL | O_BINARY, 0600)) == -1) + { + if ((c[2]++) == 'z') + { + c[2] = 'a'; + if ((c[1]++) == 'z') + { + c[1] = 'a'; + if ((c[0]++) == 'z') + break; /* sigh */ + } + } + } + if (fn) + (void) strcpy(*fn, d->fn + dirlen); + } + if (d->fd == -1) { - case EFBIG: + switch(errno) + { + case EFBIG: #ifdef EDQUOT case EDQUOT: #endif - case ENOSPC: - retval = KRB5_RC_IO_SPACE; + case ENOSPC: + retval = KRB5_RC_IO_SPACE; goto fail; - case EIO: - retval = KRB5_RC_IO_IO; goto fail; - case EPERM: - case EACCES: - case EROFS: - case EEXIST: - retval = KRB5_RC_IO_PERM; goto no_unlink; + case EIO: + retval = KRB5_RC_IO_IO; + goto fail; - default: - retval = KRB5_RC_IO_UNKNOWN; goto fail; - } + case EPERM: + case EACCES: + case EROFS: + case EEXIST: + retval = KRB5_RC_IO_PERM; + goto no_unlink; + + default: + retval = KRB5_RC_IO_UNKNOWN; + goto fail; + } } - if ((retval = krb5_rc_io_write(context, d, (krb5_pointer)&rc_vno, sizeof(rc_vno))) || + if ((retval = krb5_rc_io_write(context, d, (krb5_pointer)&rc_vno, + sizeof(rc_vno))) || (retval = krb5_rc_io_sync(context, d))) { fail: - (void) unlink(d->fn); + (void) unlink(d->fn); no_unlink: - FREE(d->fn); + FREE(d->fn); d->fn = NULL; - (void) close(d->fd); - return retval; - } - return 0; + (void) close(d->fd); + return retval; + } + return 0; } -krb5_error_code krb5_rc_io_open (context, d, fn) - krb5_context context; - krb5_rc_iostuff *d; - char *fn; +krb5_error_code +krb5_rc_io_open(krb5_context context, krb5_rc_iostuff *d, char *fn) { - krb5_int16 rc_vno; - krb5_error_code retval; + krb5_int16 rc_vno; + krb5_error_code retval; #ifndef NO_USERID - struct stat statb; + struct stat statb; #endif - GETDIR; - if (!(d->fn = malloc(strlen(fn) + dirlen + 1))) - return KRB5_RC_IO_MALLOC; - (void) strcpy(d->fn,dir); - (void) strcat(d->fn,PATH_SEPARATOR); - (void) strcat(d->fn,fn); + GETDIR; + if (!(d->fn = malloc(strlen(fn) + dirlen + 1))) + return KRB5_RC_IO_MALLOC; + (void) strcpy(d->fn, dir); + (void) strcat(d->fn, PATH_SEPARATOR); + (void) strcat(d->fn, fn); #ifdef NO_USERID - d->fd = THREEPARAMOPEN(d->fn,O_RDWR | O_BINARY,0600); + d->fd = THREEPARAMOPEN(d->fn, O_RDWR | O_BINARY, 0600); #else - if ((d->fd = stat(d->fn, &statb)) != -1) { - uid_t me; + if ((d->fd = stat(d->fn, &statb)) != -1) { + uid_t me; - me = geteuid(); - /* must be owned by this user, to prevent some security problems with + me = geteuid(); + /* must be owned by this user, to prevent some security problems with * other users modifying replay cache stufff */ - if ((statb.st_uid != me) || ((statb.st_mode & S_IFMT) != S_IFREG)) { - FREE(d->fn); - return KRB5_RC_IO_PERM; - } - d->fd = THREEPARAMOPEN(d->fn,O_RDWR | O_BINARY,0600); - } + if ((statb.st_uid != me) || ((statb.st_mode & S_IFMT) != S_IFREG)) { + FREE(d->fn); + return KRB5_RC_IO_PERM; + } + d->fd = THREEPARAMOPEN(d->fn, O_RDWR | O_BINARY, 0600); + } #endif - if (d->fd == -1) { - switch(errno) - { - case EFBIG: + if (d->fd == -1) { + switch(errno) + { + case EFBIG: #ifdef EDQUOT case EDQUOT: #endif case ENOSPC: - retval = KRB5_RC_IO_SPACE; + retval = KRB5_RC_IO_SPACE; goto fail; - case EIO: - retval = KRB5_RC_IO_IO; + case EIO: + retval = KRB5_RC_IO_IO; goto fail; - case EPERM: + case EPERM: case EACCES: - case EROFS: - retval = KRB5_RC_IO_PERM; + case EROFS: + retval = KRB5_RC_IO_PERM; goto fail; - default: - retval = KRB5_RC_IO_UNKNOWN; + default: + retval = KRB5_RC_IO_UNKNOWN; goto fail; + } } - } if ((retval = krb5_rc_io_read(context, d, (krb5_pointer) &rc_vno, sizeof(rc_vno)))) goto unlk; - if (ntohs(rc_vno) != KRB5_RC_VNO) + if (ntohs(rc_vno) != KRB5_RC_VNO) { retval = KRB5_RCACHE_BADVNO; unlk: unlink(d->fn); fail: - (void) close(d->fd); - FREE(d->fn); + (void) close(d->fd); + FREE(d->fn); d->fn = NULL; - return retval; - } - return 0; + return retval; + } + return 0; } -krb5_error_code krb5_rc_io_move (context, new, old) - krb5_context context; - krb5_rc_iostuff *new; - krb5_rc_iostuff *old; +krb5_error_code +krb5_rc_io_move(krb5_context context, krb5_rc_iostuff *new, + krb5_rc_iostuff *old) { char *fn = NULL; - #if defined(_MSDOS) || defined(_WIN32) /* * Work around provided by Tom Sanfilippo to work around poor @@ -254,7 +261,7 @@ krb5_error_code krb5_rc_io_move (context, new, old) close(new->fd); unlink(new->fn); close(old->fd); - if (rename(old->fn,new->fn) == -1) /* MUST be atomic! */ + if (rename(old->fn, new->fn) == -1) /* MUST be atomic! */ return KRB5_RC_IO_UNKNOWN; fn = new->fn; new->fn = NULL; /* avoid clobbering */ @@ -262,7 +269,7 @@ krb5_error_code krb5_rc_io_move (context, new, old) krb5_rc_io_open(context, new, fn); free(fn); #else - if (rename(old->fn,new->fn) == -1) /* MUST be atomic! */ + if (rename(old->fn, new->fn) == -1) /* MUST be atomic! */ return KRB5_RC_IO_UNKNOWN; fn = new->fn; new->fn = NULL; /* avoid clobbering */ @@ -277,118 +284,109 @@ krb5_error_code krb5_rc_io_move (context, new, old) return 0; } -krb5_error_code krb5_rc_io_write (context, d, buf, num) - krb5_context context; - krb5_rc_iostuff *d; - krb5_pointer buf; - unsigned int num; +krb5_error_code +krb5_rc_io_write(krb5_context context, krb5_rc_iostuff *d, krb5_pointer buf, + unsigned int num) { - if (write(d->fd,(char *) buf,num) == -1) - switch(errno) - { - case EBADF: return KRB5_RC_IO_UNKNOWN; - case EFBIG: return KRB5_RC_IO_SPACE; + if (write(d->fd, (char *) buf, num) == -1) + switch(errno) + { + case EBADF: return KRB5_RC_IO_UNKNOWN; + case EFBIG: return KRB5_RC_IO_SPACE; #ifdef EDQUOT - case EDQUOT: return KRB5_RC_IO_SPACE; + case EDQUOT: return KRB5_RC_IO_SPACE; #endif - case ENOSPC: return KRB5_RC_IO_SPACE; - case EIO: return KRB5_RC_IO_IO; - default: return KRB5_RC_IO_UNKNOWN; - } - return 0; + case ENOSPC: return KRB5_RC_IO_SPACE; + case EIO: return KRB5_RC_IO_IO; + default: return KRB5_RC_IO_UNKNOWN; + } + return 0; } -krb5_error_code krb5_rc_io_sync (context, d) - krb5_context context; - krb5_rc_iostuff *d; +krb5_error_code +krb5_rc_io_sync( + krb5_context context, + krb5_rc_iostuff *d + ) { #if !defined(MSDOS_FILESYSTEM) && !defined(macintosh) if (fsync(d->fd) == -1) { - switch(errno) - { - case EBADF: return KRB5_RC_IO_UNKNOWN; - case EIO: return KRB5_RC_IO_IO; - default: return KRB5_RC_IO_UNKNOWN; - } + switch(errno) + { + case EBADF: return KRB5_RC_IO_UNKNOWN; + case EIO: return KRB5_RC_IO_IO; + default: return KRB5_RC_IO_UNKNOWN; + } } #endif return 0; } -krb5_error_code krb5_rc_io_read (context, d, buf, num) - krb5_context context; - krb5_rc_iostuff *d; - krb5_pointer buf; - unsigned int num; +krb5_error_code +krb5_rc_io_read(krb5_context context, krb5_rc_iostuff *d, krb5_pointer buf, + unsigned int num) { - int count; - if ((count = read(d->fd,(char *) buf,num)) == -1) - switch(errno) - { - case EBADF: return KRB5_RC_IO_UNKNOWN; - case EIO: return KRB5_RC_IO_IO; - default: return KRB5_RC_IO_UNKNOWN; - } - if (count == 0) - return KRB5_RC_IO_EOF; - return 0; + int count; + if ((count = read(d->fd, (char *) buf, num)) == -1) + switch(errno) + { + case EBADF: return KRB5_RC_IO_UNKNOWN; + case EIO: return KRB5_RC_IO_IO; + default: return KRB5_RC_IO_UNKNOWN; + } + if (count == 0) + return KRB5_RC_IO_EOF; + return 0; } -krb5_error_code krb5_rc_io_close (context, d) - krb5_context context; - krb5_rc_iostuff *d; +krb5_error_code +krb5_rc_io_close(krb5_context context, krb5_rc_iostuff *d) { - if (d->fn != NULL) - FREE(d->fn); - d->fn = NULL; - if (close(d->fd) == -1) /* can't happen */ - return KRB5_RC_IO_UNKNOWN; - return 0; + if (d->fn != NULL) + FREE(d->fn); + d->fn = NULL; + if (close(d->fd) == -1) /* can't happen */ + return KRB5_RC_IO_UNKNOWN; + return 0; } -krb5_error_code krb5_rc_io_destroy (context, d) - krb5_context context; - krb5_rc_iostuff *d; +krb5_error_code +krb5_rc_io_destroy(krb5_context context, krb5_rc_iostuff *d) { - if (unlink(d->fn) == -1) - switch(errno) - { - case EBADF: return KRB5_RC_IO_UNKNOWN; - case EIO: return KRB5_RC_IO_IO; - case EPERM: return KRB5_RC_IO_PERM; - case EBUSY: return KRB5_RC_IO_PERM; - case EROFS: return KRB5_RC_IO_PERM; - default: return KRB5_RC_IO_UNKNOWN; - } - return 0; + if (unlink(d->fn) == -1) + switch(errno) + { + case EBADF: return KRB5_RC_IO_UNKNOWN; + case EIO: return KRB5_RC_IO_IO; + case EPERM: return KRB5_RC_IO_PERM; + case EBUSY: return KRB5_RC_IO_PERM; + case EROFS: return KRB5_RC_IO_PERM; + default: return KRB5_RC_IO_UNKNOWN; + } + return 0; } -krb5_error_code krb5_rc_io_mark (context, d) - krb5_context context; - krb5_rc_iostuff *d; +krb5_error_code +krb5_rc_io_mark(krb5_context context, krb5_rc_iostuff *d) { - d->mark = lseek(d->fd,(off_t) 0,SEEK_CUR); /* can't fail */ - return 0; + d->mark = lseek(d->fd, (off_t) 0, SEEK_CUR); /* can't fail */ + return 0; } -krb5_error_code krb5_rc_io_unmark (context, d) - krb5_context context; - krb5_rc_iostuff *d; +krb5_error_code +krb5_rc_io_unmark(krb5_context context, krb5_rc_iostuff *d) { - (void) lseek(d->fd,d->mark,SEEK_SET); /* if it fails, tough luck */ - return 0; + (void) lseek(d->fd, d->mark, SEEK_SET); /* if it fails, tough luck */ + return 0; } long -krb5_rc_io_size (context, d) - krb5_context context; - krb5_rc_iostuff *d; +krb5_rc_io_size(krb5_context context, krb5_rc_iostuff *d) { struct stat statb; - - if (fstat (d->fd, &statb) == 0) + + if (fstat(d->fd, &statb) == 0) return statb.st_size; else return 0; } - diff --git a/src/util/ss/ChangeLog b/src/util/ss/ChangeLog index 54848b6..7bfd2f0 100644 --- a/src/util/ss/ChangeLog +++ b/src/util/ss/ChangeLog @@ -1,3 +1,11 @@ +2001-06-20 Ken Raeburn <raeburn@mit.edu> + + * request_tbl.c (ss_add_request_table): Delete unnecessary cast in + size arg to realloc. + + * invocation.c (ss_delete_invocation): Delete unnecessary cast in + arg to free. + 2001-06-07 Ezra Peisach <epeisach@mit.edu> * request_tbl.c (ss_add_request_table): Do not cast argument to diff --git a/src/util/ss/invocation.c b/src/util/ss/invocation.c index c7cef48..5e1a256 100644 --- a/src/util/ss/invocation.c +++ b/src/util/ss/invocation.c @@ -70,7 +70,7 @@ ss_delete_invocation(sci_idx) t = ss_info(sci_idx); free(t->prompt); - free((char *)t->rqt_tables); + free(t->rqt_tables); while(t->info_dirs[0] != (char *)NULL) ss_delete_info_dir(sci_idx, t->info_dirs[0], &ignored_code); free((char *)t->info_dirs); diff --git a/src/util/ss/request_tbl.c b/src/util/ss/request_tbl.c index a9e751e..46eb3a0 100644 --- a/src/util/ss/request_tbl.c +++ b/src/util/ss/request_tbl.c @@ -25,7 +25,7 @@ ss_add_request_table(sci_idx, rqtbl_ptr, position, code_ptr) /* size == C subscript of NULL == #elements */ size += 2; /* new element, and NULL */ info->rqt_tables = (ssrt **)realloc(info->rqt_tables, - (unsigned)size*sizeof(ssrt)); + size*sizeof(ssrt)); if (info->rqt_tables == (ssrt **)NULL) { *code_ptr = errno; return; |