(from Keith Vetter's windows changes); define THREEPARAMOPEN and
prototype for sscanf. Also add #define for strncasecmp() to the
microsoft's strnicmp() function.
Fix optional host parsing so that host is recognized as an argument
without the -h option. Free the context and auth_context structures
before exiting.
Allow the user to specify the service instance using the -s option.
Use SO_REUSEEADDR so that the port can be immediately reused. Free
the context and auth_context before exiting.
gssapiP_krb5.h: Remove context and cred from the gssapi security
context, as they aren't needed. kg_seal and kg_unseal now take a
krb5_context argument.
ser_sctx.c (kg_ctx_size, kg_ctx_externalize, kg_ctx_internalize): No
longer serialize the context and cred fields of the gssapi security
context.
krb5_gss_glue.c: Don't rely on the context field of the gssapi
security context. Use kg_context instead.
verify.c (krb5_gss_verify, krb5_gss_verify_mic):
unseal.c (krb5_gss_unwrap, krb5_gss_unseal):
sign.c (krb5_gss_sign, krb5_gss_get_mic):
seal.c (krb5_gss_seal, krb5_gss_wrap):
process_context_token.c (krb5_gss_process_context_token):
k5unseal.c (kg_unseal):
k5seal.c (kg_seal_size): Add a krb5_context argument to this function,
so we don't have to depend on the context field in the gssapi
security context.
init_sec_context.c (krb5_gss_init_sec_context): Don't initialize the
context and cred fields in the gssapi security context. Copy
ctx->subkey to ctx->seq.key, so they are separately allocated.
gssapi_krb5.c (kg_get_context): When initialize kg_context, call
krb5_init_ets() so that the error tables are initialized.
export_sec_context.c (krb5_gss_export_sec_context): Don't depend on
the context field from the gssapi security context. Free
ctx->seq.key.
delete_sec_context.c (krb5_gss_delete_sec_context): kg_seal() now
takes a krb5_context argument. Free ctx->seq.key.
acquire_cred.c (krb5_gss_acquire_cred): Clear the gssapi credential
before setting it, to prevent purify from complaining.
accept_sec_context.c (krb5_gss_accept_sec_context): Remove context and
cred from the gssapi security context. Make sure the ticket is freed
after we're done with it.
import_sec_context.c (krb5_gss_import_sec_context): Don't bash the
input interprocess_token. Otherwise, it can't be freed. Don't
depend on the context field in the gss security context.
sendauth.c (krb5_sendauth): Make sure the scratch credentials
structure may have possible been used be freed..
rd_safe.c (krb5_rd_safe_basic): Fall through to the cleanup code at
the end, to make sure the decoded message in message is freed.
rd_req_dec.c (krb5_rd_req_decoded): Use krb5_copy_keyblock to copy
authent->subkey to auth_context->remote_subkey. Keeping them
separate avoids aliasing problems.
mk_req_ext.c (krb5_generate_authenticator): Fix memory leak. Don't
bash authent->subkey with key after carefully copying it using
krb5_copy_keyblock!
recvauth.c (krb5_recvauth): krb5_get_server_rcache() already opens the
rcache; doing it again merely causes a memory leak.
gen_subkey.c (krb5_generate_subkey): Eliminate memory leak.
krb5_init_random_key() does its own allocation of the
keyblock.
Improved (and changed) input argument handling, to make sim_server
more flexible. This should make it possible to run sim_server from a
DejaGnu test suite. Fixed -Wall nits.
Add DES_CBC_MD5 and DES_CBC_CRC with the V4 salt as default key/salt
tuples to be added. (Once proven's DES_* folding code is implemented,
we can shorten this list.) Eventually, this list should be read in
from kdc.conf.
sim_client.c (main): Added better options parsing for more flexibility
in calling this program. Worked around breakage in the Solaris
Streams Sockets emulation where getsockname() can not be used to find
out the address of a network interface.
configure.in: If we are including both -lsocket and -lnsl, #define
BROKEN_STREAMS_SOCKETS.
Mark Eichin [Thu, 14 Sep 1995 21:39:03 +0000 (21:39 +0000)]
* krb524d.c (usage): needs to get context to pass to
cleanup_and_exit so it does get freed, since it is allocated
before parsing arguments.
(main): change caller as well.
Mark Eichin [Thu, 14 Sep 1995 03:55:13 +0000 (03:55 +0000)]
Wed Sep 13 23:53:19 1995 Mark Eichin <eichin@cygnus.com>
* kprop.h (KPROP_SRVTAB, KPROP_DEFAULT_FILE, KPROPD_DEFAULT_FILE,
KPROPD_DEFAULT_KDB5_EDIT, KPROPD_DEFAULT_KRB_DB, KPROPD_ACL_FILE):
removed configurable pathnames, they are now in osconf.h (which
gets included here via k5-int.h).
Mark Eichin [Thu, 14 Sep 1995 03:52:05 +0000 (03:52 +0000)]
Wed Sep 13 23:50:02 1995 Mark Eichin <eichin@cygnus.com>
* osconf.h (KPROP_DEFAULT_FILE, KPROPD_DEFAULT_FILE,
KPROPD_DEFAULT_KDB5_EDIT, KPROPD_DEFAULT_KRB_DB): set defaults
correctly for kprop/kpropd in respect to prefix.
(key_encrypt_keys): Remove equally errneous krb5_use_enctype() call
from key_encrypt_keys().
(key_string2key_keysalt and key_randomkey_keysalt): Install really
ugly hack to prevent these routines from munging the master_encblock.
This is not the correct fix. Proven will be making the correct fix
which will involve removing these routines and using the corect
libkdb functions.
Mark Eichin [Thu, 14 Sep 1995 02:41:33 +0000 (02:41 +0000)]
moderately clean handling of allocated storage on error during partial
construction, in spite of not having exception handling in the language.
* krb5_decode.c (clean_krb5_authenticator, clean_krb5_ticket,
clean_krb5_enc_tkt_part,clean_krb5_ap_req,
clean_krb5_ap_rep_enc_part, clean_krb5_safe,
clean_krb5_priv_enc_part, clean_krb5_cred_enc_part,
clean_krb5_error): new static functions to free objects that may
be partially constructed.
(setup_buf_only, setup_no_tagnum, setup_no_length, setup): define
in terms of each other to remove duplication, then add local
variable error_cleanup to common declarations.
(clean_return): new macro, uses error_cleanup on rep if possible
and the allows the argument to be returned.
(alloc_field, check_apptag, next_tag, begin_structure,
get_field_body, get_field, get_lenfield_body, get_lenfield): use
clean_return.
(free_field): new macro to simplify the writing of clean_*.
(clear_field): macro to clean up preparation of fields for later
use by clean_* functions.
(decode_krb5_authenticator, decode_krb5_ticket,
decode_krb5_encryption_key, decode_krb5_enc_tkt_part,
decode_krb5_enc_kdc_rep_part, decode_krb5_as_rep,
decode_krb5_tgs_rep, decode_krb5_ap_req, decode_krb5_ap_rep,
decode_krb5_ap_rep_enc_part, decode_krb5_as_req,
decode_krb5_tgs_req, decode_krb5_kdc_req_body, decode_krb5_safe,
decode_krb5_priv, decode_krb5_enc_priv_part, decode_krb5_cred,
decode_krb5_enc_cred_part, decode_krb5_error,
decode_krb5_authdata, decode_krb5_pwd_sequence,
decode_krb5_pwd_data, decode_krb5_padata_sequence,
decode_krb5_alt_method, decode_krb5_etype_info): change setup
macro to pass a cleanup method (or just free if there were no
partial allocations, or 0 for the two cases with no allocation at
all.) Also explicitly zero pointer subfields, since calloc is not
a safe way to assure that. Generally, provide for automatic
deallocation of storage on error.
(tgt_keysalt_iterate): Don't bash the master key encblock when
creating the various TGT keys. Otherwise, the keys end up getting
encrypted using the wrong encryption algorithm. Initialize a new
encblock, random_encblock, from the master key password.
(main): Prompt for the master key password ourselves, and store it
away so that it can be used by tgt_keysalt_iterate.
fetch_mkey.c (krb5_db_fetch_mkey): This routine now sets the master
encblock's crypto system using krb5_use_enctype() from the stored
keytype of the master key.
decrypt_key.c (krb5_dbekd_decrypt_key_data): Remove the encryption
type; the master_encblock should always be set correctly.
Save the key used to generate the database files. Also generate a set
of environment setup scripts. These are the convenience of someone
who wishes to run some of the tests by hand, when tests are bombing.
Undo MACINTOSH changes to path in these files - theye were correct. The
Makefile.in alread specifies the right locations to include so that
,krb5/...> is not required for unix
Document that Makefile.in has changed.
Replace top level Makefile with the one indicating that one should read the
documentation. (not one generated from Makefile.in)
srv_key.c: Globally change use of ENCTYPE_DES_CBC_MD5 to
DEFAULT_KDC_ENCTYPE, so that we use the same encryption type by
default for all KDC server programs.
srv_main.c (main): Set the default realm from the -r argument, so that
correct defaulting takes place for things like krb5_parse().
srv_net.c (net_init): Use KRB5_ADM_SERVICE_INSTANCE to determine the
service instance, instance of KRB5_ADMIN_SERVICE_NAME.
Use official IANA assigned name for the port, which is kpasswd, not
changepw. Add new define, KRB5_ADM_SERVICE_INSTANCE, which defines
the instance name used for the kadmin name.