diff options
| author | Paul Park <pjpark@mit.edu> | 1995-04-28 19:25:55 +0000 |
|---|---|---|
| committer | Paul Park <pjpark@mit.edu> | 1995-04-28 19:25:55 +0000 |
| commit | 77f7de1bdb0c3630bd10abe8db52ea6610ed3fbb (patch) | |
| tree | 783bacd0d22a49847613720b1664d1cd7f8075ed /src/kadmin/v5server | |
| parent | 62251ae673bcc761cd7765680394f9e7cac5d480 (diff) | |
| download | krb5-77f7de1bdb0c3630bd10abe8db52ea6610ed3fbb.tar.gz krb5-77f7de1bdb0c3630bd10abe8db52ea6610ed3fbb.tar.xz krb5-77f7de1bdb0c3630bd10abe8db52ea6610ed3fbb.zip | |
Use new library libkadm.
Cleanup some type conflicts.
Allow for case-insensitivity for protocol commands.
Cleanup some include files.
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@5624 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/kadmin/v5server')
| -rw-r--r-- | src/kadmin/v5server/ChangeLog | 14 | ||||
| -rw-r--r-- | src/kadmin/v5server/Makefile.in | 7 | ||||
| -rw-r--r-- | src/kadmin/v5server/configure.in | 1 | ||||
| -rw-r--r-- | src/kadmin/v5server/passwd.c | 12 | ||||
| -rw-r--r-- | src/kadmin/v5server/proto_serv.c | 19 | ||||
| -rw-r--r-- | src/kadmin/v5server/srv_key.c | 27 | ||||
| -rw-r--r-- | src/kadmin/v5server/srv_main.c | 6 | ||||
| -rw-r--r-- | src/kadmin/v5server/srv_net.c | 14 | ||||
| -rw-r--r-- | src/kadmin/v5server/srv_output.c | 85 |
9 files changed, 145 insertions, 40 deletions
diff --git a/src/kadmin/v5server/ChangeLog b/src/kadmin/v5server/ChangeLog index f0937c47d..c25448af4 100644 --- a/src/kadmin/v5server/ChangeLog +++ b/src/kadmin/v5server/ChangeLog @@ -1,3 +1,17 @@ + +Fri Apr 28 10:13:21 EDT 1995 Paul Park (pjpark@mit.edu) + Add new library libkadm. + * configure.in - Check for presence of vsprintf. + * passwd.c - Use size_t for sizes. + * proto_serv.c - Allow for case-insensitivity of commands. + - Remove socket-dependent includes and add NEED_SOCKETS + * srv_key.c - Use size_t for sizes. + * srv_main.c - Check for presence of vsprintf. + * srv_net.c - Remove socket-dependent includes and add NEED_SOCKETS + - Use size_t for sizes. + - Return success if bind succeeds. + * srv_output.c - Add language name recoginition. + Fri Apr 28 13:06:18 1995 Theodore Y. Ts'o <tytso@dcl> * srv_net.c: Linux doesn't have SOMAXCONN, assume 5 if not defined. diff --git a/src/kadmin/v5server/Makefile.in b/src/kadmin/v5server/Makefile.in index 5dd6822e7..d73336a54 100644 --- a/src/kadmin/v5server/Makefile.in +++ b/src/kadmin/v5server/Makefile.in @@ -4,12 +4,13 @@ LDFLAGS = -g COMERRLIB=$(BUILDTOP)/util/et/libcom_err.a SSLIB=$(BUILDTOP)/util/ss/libss.a DBMLIB= -KDBLIB=$(TOPLIBD)/libkdb5.a +KDBLIB=$(TOPLIBD)/libkdb5.a +KADMLIB=$(TOPLIBD)/libkadm.a all:: -KLIB = $(KDBLIB) $(TOPLIBD)/libkrb5.a $(TOPLIBD)/libcrypto.a $(SSLIB) $(COMERRLIB) $(DBMLIB) -DEPKLIB = $(TOPLIBD)/libkrb5.a $(TOPLIBD)/libcrypto.a $(SSLIB) $(COMERRLIB) $(DBMLIB) +KLIB = $(KADMLIB) $(KDBLIB) $(TOPLIBD)/libkrb5.a $(TOPLIBD)/libcrypto.a $(SSLIB) $(COMERRLIB) $(DBMLIB) +DEPKLIB = $(KADMLIB) $(TOPLIBD)/libkrb5.a $(TOPLIBD)/libcrypto.a $(SSLIB) $(COMERRLIB) $(DBMLIB) SRCS = \ $(srcdir)/srv_main.c $(srcdir)/srv_key.c \ diff --git a/src/kadmin/v5server/configure.in b/src/kadmin/v5server/configure.in index 96db24427..e5a097e0d 100644 --- a/src/kadmin/v5server/configure.in +++ b/src/kadmin/v5server/configure.in @@ -7,6 +7,7 @@ WITH_NETLIB AC_CHECK_LIB(ndbm,main) AC_CHECK_LIB(dbm,main) AC_FUNC_CHECK(waitpid,AC_DEFINE(HAVE_WAITPID)) +AC_FUNC_CHECK(vsprintf,AC_DEFINE(HAVE_VSPRINTF)) CHECK_WAIT_TYPE ET_RULES KRB_INCLUDE diff --git a/src/kadmin/v5server/passwd.c b/src/kadmin/v5server/passwd.c index 9013c3d84..2e5b498a5 100644 --- a/src/kadmin/v5server/passwd.c +++ b/src/kadmin/v5server/passwd.c @@ -161,19 +161,19 @@ passwd_check_opass_ok(kcontext, debug_level, princ, dbentp, pwdata) if (kret) pwret = 0; if (akey1.contents) { - memset((char *) akey1.contents, 0, akey1.length); + memset((char *) akey1.contents, 0, (size_t) akey1.length); krb5_xfree(akey1.contents); } if (pkey1.contents) { - memset((char *) pkey1.contents, 0, pkey1.length); + memset((char *) pkey1.contents, 0, (size_t) pkey1.length); krb5_xfree(pkey1.contents); } if (akey.contents) { - memset((char *) akey.contents, 0, akey.length); + memset((char *) akey.contents, 0, (size_t) akey.length); krb5_xfree(akey.contents); } if (pkey.contents) { - memset((char *) pkey.contents, 0, pkey.length); + memset((char *) pkey.contents, 0, (size_t) pkey.length); krb5_xfree(pkey.contents); } DPRINT(DEBUG_CALLS, debug_level, @@ -309,11 +309,11 @@ passwd_set_npass(kcontext, debug_level, princ, dbentp, pwdata) krb5_xfree(entry2write.alt_key.contents); } if (akey.contents) { - memset((char *) akey.contents, 0, akey.length); + memset((char *) akey.contents, 0, (size_t) akey.length); krb5_xfree(akey.contents); } if (pkey.contents) { - memset((char *) pkey.contents, 0, pkey.length); + memset((char *) pkey.contents, 0, (size_t) pkey.length); krb5_xfree(pkey.contents); } DPRINT(DEBUG_CALLS, debug_level, diff --git a/src/kadmin/v5server/proto_serv.c b/src/kadmin/v5server/proto_serv.c index a49e68956..f3dcc490b 100644 --- a/src/kadmin/v5server/proto_serv.c +++ b/src/kadmin/v5server/proto_serv.c @@ -27,15 +27,12 @@ * protocol as implemented in lib/krb5/os/adm_conn.c. Any changes * in one module must be reflected in the other. */ -#include <sys/types.h> -#include <sys/signal.h> -#include <sys/socket.h> -#include <netinet/in.h> -#include <setjmp.h> +#define NEED_SOCKETS #include "k5-int.h" #include "com_err.h" #include "kadm5_defs.h" #include "adm.h" +#include <setjmp.h> static const char *proto_addrs_msg = "%d: cannot get memory for addresses"; static const char *proto_rcache_msg = "%d: cannot get replay cache"; @@ -298,7 +295,7 @@ proto_serv(kcontext, my_id, cl_sock, sv_p, cl_p) cmd_repl_complist = (krb5_data *) NULL; err_aux = 0; if (num_args > 0) { - if (!strcmp(arglist[0].data, KRB5_ADM_QUIT_CMD)) { + if (!strcasecmp(arglist[0].data, KRB5_ADM_QUIT_CMD)) { DPRINT(DEBUG_REQUESTS, proto_debug_level, ("> %d:QUIT command\n", my_id)); /* QUIT takes no arguments */ @@ -314,7 +311,7 @@ proto_serv(kcontext, my_id, cl_sock, sv_p, cl_p) err_aux = KRB5_ADM_BAD_ARGS; } } - else if (!strcmp(arglist[0].data, KRB5_ADM_CHECKPW_CMD)) { + else if (!strcasecmp(arglist[0].data, KRB5_ADM_CHECKPW_CMD)) { DPRINT(DEBUG_REQUESTS, proto_debug_level, ("> %d:CHECKPW command\n", my_id)); if (num_args == 2) { @@ -334,7 +331,7 @@ proto_serv(kcontext, my_id, cl_sock, sv_p, cl_p) err_aux = KRB5_ADM_BAD_ARGS; } } - else if (!strcmp(arglist[0].data, KRB5_ADM_CHANGEPW_CMD)) { + else if (!strcasecmp(arglist[0].data, KRB5_ADM_CHANGEPW_CMD)) { DPRINT(DEBUG_REQUESTS, proto_debug_level, ("> %d:CHANGEPW command\n", my_id)); if (num_args == 3) { @@ -355,7 +352,7 @@ proto_serv(kcontext, my_id, cl_sock, sv_p, cl_p) err_aux = KRB5_ADM_BAD_ARGS; } } - else if (!strcmp(arglist[0].data, KRB5_ADM_MOTD_CMD)) { + else if (!strcasecmp(arglist[0].data, KRB5_ADM_MOTD_CMD)) { DPRINT(DEBUG_REQUESTS, proto_debug_level, ("> %d:MOTD command\n", my_id)); if (num_args <= 2) { @@ -373,7 +370,7 @@ proto_serv(kcontext, my_id, cl_sock, sv_p, cl_p) err_aux = KRB5_ADM_BAD_ARGS; } } - else if (!strcmp(arglist[0].data, KRB5_ADM_MIME_CMD)) { + else if (!strcasecmp(arglist[0].data, KRB5_ADM_MIME_CMD)) { DPRINT(DEBUG_REQUESTS, proto_debug_level, ("> %d:MIME command\n", my_id)); if (num_args == 1) { @@ -388,7 +385,7 @@ proto_serv(kcontext, my_id, cl_sock, sv_p, cl_p) err_aux = KRB5_ADM_BAD_ARGS; } } - else if (!strcmp(arglist[0].data, KRB5_ADM_LANGUAGE_CMD)) { + else if (!strcasecmp(arglist[0].data, KRB5_ADM_LANGUAGE_CMD)) { DPRINT(DEBUG_REQUESTS, proto_debug_level, ("> %d:LANGUAGE command\n", my_id)); if (num_args == 2) { diff --git a/src/kadmin/v5server/srv_key.c b/src/kadmin/v5server/srv_key.c index 8a3055a9a..809c5d9d2 100644 --- a/src/kadmin/v5server/srv_key.c +++ b/src/kadmin/v5server/srv_key.c @@ -232,7 +232,8 @@ key_init(kcontext, debug_level, enc_type, key_type, master_key_name, manual, mencb_init = 0; } if (mkeyb_init) { - memset(master_keyblock.contents, 0, master_keyblock.length); + memset(master_keyblock.contents, 0, + (size_t) master_keyblock.length); krb5_xfree(master_keyblock.contents); mkeyb_init = 0; } @@ -368,20 +369,21 @@ key_string_to_keys(kcontext, principal, string, psalttype, asalttype, done: if (kret) { if (primary->contents) { - memset((char *) primary->contents, 0, primary->length); + memset((char *) primary->contents, 0, (size_t) primary->length); krb5_xfree(primary->contents); } if (alternate->contents) { - memset((char *) alternate->contents, 0, alternate->length); + memset((char *) alternate->contents, 0, + (size_t) alternate->length); krb5_xfree(alternate->contents); } } if (psalt_data.data) { - memset(psalt_data.data, 0, psalt_data.length); + memset(psalt_data.data, 0, (size_t) psalt_data.length); krb5_xfree(psalt_data.data); } if (asalt_data.data) { - memset(asalt_data.data, 0, asalt_data.length); + memset(asalt_data.data, 0, (size_t) asalt_data.length); krb5_xfree(asalt_data.data); } DPRINT(DEBUG_CALLS, key_debug_level, @@ -417,11 +419,12 @@ key_encrypt_keys(kcontext, principal, primary, alternate, eprimary, ealternate) done: if (kret) { if (eprimary->contents) { - memset((char *) eprimary->contents, 0, eprimary->length); + memset((char *) eprimary->contents, 0, (size_t) eprimary->length); krb5_xfree(eprimary->contents); } if (ealternate->contents) { - memset((char *) ealternate->contents, 0, ealternate->length); + memset((char *) ealternate->contents, 0, + (size_t) ealternate->length); krb5_xfree(ealternate->contents); } } @@ -458,11 +461,12 @@ key_decrypt_keys(kcontext, principal, eprimary, ealternate, primary, alternate) done: if (kret) { if (primary->contents) { - memset((char *) primary->contents, 0, primary->length); + memset((char *) primary->contents, 0, (size_t) primary->length); krb5_xfree(primary->contents); } if (alternate->contents) { - memset((char *) alternate->contents, 0, alternate->length); + memset((char *) alternate->contents, 0, + (size_t) alternate->length); krb5_xfree(alternate->contents); } } @@ -511,11 +515,12 @@ key_pwd_is_weak(kcontext, principal, string, psalttype, asalttype) mit_des_is_weak_key(alternate.contents)) weakness = 1; if (primary.contents) { - memset((char *) primary.contents, 0, primary.length); + memset((char *) primary.contents, 0, (size_t) primary.length); krb5_xfree(primary.contents); } if (alternate.contents) { - memset((char *) alternate.contents, 0, alternate.length); + memset((char *) alternate.contents, 0, + (size_t) alternate.length); krb5_xfree(alternate.contents); } } diff --git a/src/kadmin/v5server/srv_main.c b/src/kadmin/v5server/srv_main.c index ff1154501..248e82aba 100644 --- a/src/kadmin/v5server/srv_main.c +++ b/src/kadmin/v5server/srv_main.c @@ -102,7 +102,13 @@ kadm_com_err_proc(whoami, code, format, ap) strcat(outbuf, " - "); } cp = &outbuf[strlen(outbuf)]; +#if HAVE_VSPRINTF vsprintf(cp, format, ap); +#else /* HAVE_VSPRINTF */ + sprintf(cp, format, ((int *) ap)[0], ((int *) ap)[1], + ((int *) ap)[2], ((int *) ap)[3], + ((int *) ap)[4], ((int *) ap)[5]); +#endif /* HAVE_VSPRINTF */ #ifndef DEBUG syslog(LOG_AUTH|LOG_ERR, outbuf); #endif /* DEBUG */ diff --git a/src/kadmin/v5server/srv_net.c b/src/kadmin/v5server/srv_net.c index f07c36a41..534e57d29 100644 --- a/src/kadmin/v5server/srv_net.c +++ b/src/kadmin/v5server/srv_net.c @@ -25,11 +25,6 @@ /* * srv_net.c - handle networking functions of the administrative server. */ -#include <sys/types.h> -#include <sys/signal.h> -#include <sys/socket.h> -#include <netinet/in.h> -#include <netdb.h> #include <errno.h> #include <setjmp.h> #include <sys/wait.h> @@ -37,6 +32,7 @@ #include <pthread.h> #endif /* USE_PTHREADS */ +#define NEED_SOCKETS #include "k5-int.h" #include "com_err.h" #include "kadm5_defs.h" @@ -414,8 +410,8 @@ net_init(kcontext, debug_level) } /* Allocate the slave table */ - net_slave_table = (net_slave_info *) malloc(MAX_SLAVES * - sizeof(net_slave_info)); + net_slave_table = (net_slave_info *) + malloc((size_t) (MAX_SLAVES * sizeof(net_slave_info))); /* Make our service name */ net_service_name = (char *) malloc(strlen(local_realm) + strlen(KRB5_ADM_SERVICE_NAME) + 2); @@ -429,7 +425,8 @@ net_init(kcontext, debug_level) (void) sprintf(net_service_name, "%s%s%s", KRB5_ADM_SERVICE_NAME, "/", local_realm); krb5_xfree(local_realm); - memset((char *) net_slave_table, 0, MAX_SLAVES * sizeof(net_slave_info)); + memset((char *) net_slave_table, 0, + (size_t) (MAX_SLAVES * sizeof(net_slave_info))); net_max_slaves = MAX_SLAVES; DPRINT(DEBUG_HOST, net_debug_level, ("- name of service is %s\n", net_service_name)); @@ -513,6 +510,7 @@ net_init(kcontext, debug_level) else { DPRINT(DEBUG_HOST, net_debug_level, ("- bound socket %d on port\n", net_listen_socket)); + kret = 0; break; } } while (bind_tries < MAX_BIND_TRIES); diff --git a/src/kadmin/v5server/srv_output.c b/src/kadmin/v5server/srv_output.c index b1b72a346..bb99f0f28 100644 --- a/src/kadmin/v5server/srv_output.c +++ b/src/kadmin/v5server/srv_output.c @@ -47,7 +47,15 @@ static const char *out_adm_no_cmd = "No command in message."; static const char *out_adm_no_err = "Unknown error."; static int output_debug_level = 0; static int output_mime_enabled = 0; +static int output_lang_inited = 0; +static char **output_lang_list = (char **) NULL; +static char *output_langstring = (char *) NULL; +/* + * lang_error_message() - Return language-dependent Kerberos error message. + * + * This is just a hook. + */ static char * lang_error_message(lang, kval) char *lang; @@ -73,6 +81,11 @@ lang_error_message(lang, kval) return(ret); } +/* + * lang_adm_message() - Return language-dependent administrative message. + * + * This is just a hook. + */ static char * lang_adm_message(lang, ecode, aux, nargs, alist) char *lang; @@ -84,7 +97,7 @@ lang_adm_message(lang, ecode, aux, nargs, alist) char *ret; const char *ermsg; char *erarg; - int alen; + size_t alen; erarg = (char *) NULL; switch (ecode) { @@ -182,6 +195,11 @@ lang_adm_message(lang, ecode, aux, nargs, alist) return(ret); } +/* + * mimeify_text() - MIME encode text. + * + * This is just a hook. + */ static char * mimeify_text(msg) char *msg; @@ -204,6 +222,55 @@ mimeify_text(msg) } /* + * lang_init_slist() - Initialize list of supported languages. + */ +static int +lang_init_slist(llist) + char *llist; +{ + int ret; + + DPRINT(DEBUG_CALLS, output_debug_level, ("* lang_init_slist()\n")); + ret = 1; + if (llist) { + int nseps, i; + char *sepp; + + /* First count the number of commas. */ + sepp = llist; + for (nseps=1; + (sepp = strchr(sepp, (int) ',')) != (char *) NULL; + nseps++) + sepp++; + + output_langstring = + (char *) malloc((size_t) (strlen(llist)+1)); + output_lang_list = + (char **) malloc((size_t) ((nseps+1) * sizeof(char *))); + if (output_lang_list && output_langstring) { + strcpy(output_langstring, llist); + sepp = output_langstring; + for (i=0; i<nseps; i++) { + output_lang_list[i] = sepp; + sepp = strchr(sepp, (int) ','); + if (sepp) { + *sepp = '\0'; + sepp++; + } + } + output_lang_list[nseps] = (char *) NULL; + } + else { + if (output_langstring) + free(output_langstring); + ret = 0; + } + } + DPRINT(DEBUG_CALLS, output_debug_level, + ("X lang_init_slist() = %d\n", ret)); +} + +/* * output_init() - Initialize output context. */ krb5_error_code @@ -222,6 +289,7 @@ output_init(kcontext, debug_level, language_list, mime_enabled) ((language_list) ? language_list : "(null)"), mime_enabled)); output_mime_enabled = mime_enabled; + output_lang_inited = lang_init_slist(language_list); DPRINT(DEBUG_CALLS, output_debug_level, ("X output_init() = %d\n", kret)); return(kret); } @@ -235,6 +303,12 @@ output_finish(kcontext, debug_level) int debug_level; { DPRINT(DEBUG_CALLS, output_debug_level, ("* output_finish()\n")); + if (output_lang_inited) { + if (output_langstring) + free(output_langstring); + if (output_lang_list) + free(output_lang_list); + } DPRINT(DEBUG_CALLS, output_debug_level, ("X output_finish()\n")); } @@ -246,10 +320,19 @@ output_lang_supported(lname) char *lname; { krb5_boolean ret; + int i; DPRINT(DEBUG_CALLS, output_debug_level, ("* output_lang_supported(lang=%s)\n", ((lname) ? lname : "(default)"))); ret = 1; + if (lname) { + ret = 0; + if (output_lang_inited && output_lang_list) { + for (i=0; output_lang_list[i]; i++) + if (!strcmp(output_lang_list[i], lname)) + ret = 1; + } + } DPRINT(DEBUG_CALLS, output_debug_level, ("X output_lang_supported() = %d\n", ret)); return(ret); |
