[395] in Kerberos-V5-bugs

home help back first fref pref prev next nref lref last post

Bugs-O-Plenty (long)

daemon@ATHENA.MIT.EDU (Jim Miller)
Tue Dec 7 19:45:10 1993

From: jim@bilbo.suite.com (Jim Miller)
Date: Tue, 7 Dec 93 18:44:22 -0600
To: krb5-bugs@MIT.EDU
Cc: kerberos@MIT.EDU
Reply-To: Jim_Miller@suite.com


The following list of bugs is for Kerberos 5, pre-beta 3.  


The majority of the bugs are not show-stoppers.  Some are, though.

Jim_Miller@suite.com


------------------------
FORMAT

(file name)

routine/function name
- comment

----------------

(des/string2key.c)

mit_des_string_to_key
- doesn't free keyblock->contents if no memory for copystr


(kdc/fetch_mkey.c)

kdc_fetch_mkey
- doesn't free key->contents if error with fread


(kdc/dbm.c)

kdcm_db_init
- doesn't free filename if open errors

kdcm_db_rename
- doesn't free anything if error returned by kdcm_db_start_update


(krb/copy_tick.c)

krb5_copy_enc_tkt_part
- wrong error value returned if no memory for 

  tempto->transited.tr_contents.data

krb5_copy_ticket
- doesn't free 'tempto' if error returned by first krb5_copy_principal


(krb/gc_2tgt.c)

krb5_get_cred_via_2tgt
- doesn't free cred->addresses if error returned by krb5_copy_principal
- doesn't free cred->server if error returned by encode_krb5_ticket
- doesn't call krb5_finish_key if error returned by krb5_timeofday


(krb/get_in_tkt.c)

krb5_get_in_tkt
- doesn't free as_reply if error returned by krb5_copy_addresses


(krb/mk_priv.c)

krb5_mk_priv
- doesn't free 'scratch' correctly if realloc fails
- doesn't free 'privmsg_enc_part->r_address' or 

  'privmsg_enc_part->s_address' at all


(krb/rd_safe.c)

krb5_rd_safe
- doesn't free 'message' if invalid checksum type


(rcache/rc_dfl.c)

krb5_rc_io_fetch
- doesn't free memory if errors occur


(ccache/stdio/scc_sseq.c)

krb5_scc_start_seq_get
- returns KRB5_OK, even if there was an error in MAYBE_CLOSE


(ccache/stdio/scc_read.c)

krb5_scc_read_principal
- 'errout' code always returns CC_NOMEM, it should return 'kret'


(kdc/setup_mkey.c)

kdc_setup_mkey_name
- routine should construct full principal name and then call 

  krb5_parse_name instead of doing what it currently does


(admin/edit/dump.c)

load_db
- tests 'salt_len' when it should be testing 'alt_salt_len'


(admin/edit/kdc_edit.c)

enter_master_key
- should test 'valid_master_key' and then "finish" master key if true

set_dbname
- should clear 'valid_master_key' if 'dbactive' and 'valid_master_key'


(kdc/do_as_req.c)

check_padata
- returns 0 if can't extract Client Key/alt_key.  Is this correct?

process_as_req
- is 'pwreq' variable still ncessary?
- doesn't do 'cleanup' if error returned by either kdc_get_principal call
- 'cleanup' gets called after return from krb5_encode_kdc_rep.  'cleanup' 

  frees cname and sname, yet cname and sname are still being used for 

  syslog messages.
- 'cname' and 'sname' gets freed twice (at end of 'process_as_req')


(kdc/kdc_util.c)

validate_tgs_request
- check for TGT proxie attempt should use TGTNAME macro


(kadmin/server/adm_process.c)

process_client
- the following 'if' check seems backwards:

	if ((client_creds->enc_part2->times.authtime - adm_time) > 60*5) {

  shouldn't it be:
	if ((adm_time - client_creds->enc_part2->times.authtime) > 60*5) {

- doesn't free inbuf.data if error returned by final krb5_rd_priv
- doesn't free msg_data.data if error returned by final krb5_write_message
- doesn't do right thing if error returned by krb5_recvauth
- doesn't free server_entry contents upon success
- doesn't free cpw_key.key upon success


(kadmin/server/adm_adm_func.c)

adm_build_key
- not freeing msg_data if krb5_write_message returns with error

adm_change_pwd
- retval = 8; on err return from adm_enter_pwd_key is lost

adm_change_pwd_rnd
- wrong syslog message. it says remote add, should be random pswd change

adm_mod_old_key
- doesn't do kdc_free_principal(&entry, nprincs) after adm_princ_exists
- not freeing msg_data if krb5_write_message returns with error
- doesn't check retval on call to kdc_put_principal

adm_inq_old_key
- doesn't do kdc_free_principal(&entry, nprincs) after adm_princ_exists
- doesn't return when err in adm_fmt_prt
- not freeing msg_data if krb5_write_message returns with error
- not freeing outbuf !!


(kadmin/server/adm_kadmin.c)

adm5_kadmin
- not freeing msg_data if krb5_write_message returns with error
- frees completion_msg twice if go thru default OPER case
- frees completion_msg twice if go thru non-default retval case
- completion_msg in default retval case says "ksrvutil"
- not freeing msg_data if err in final reply


(kadmin/server/adm_fmt_inq.c)

adm_fmt_prt
- com_err string has wrong function name
- doesn't check return status on call to adm_print_exp_time
- doesn't check return status on call to adm_print_attributes
- shouldn't you check req_type before encrypting keys?


(kadmin/server/adm_funcs.c)

adm_modify_kdc
- if err when encrypting alt_key, need to wipe out entry->key, if exists
- if err when encrypting alt_key, need to free entry->key, if exists
- memset of entry (if new entry) uses sizeof(entry) should be 

  sizeof(*entry)
- memset of entry (if new entry) sets '&entry', should be 'entry'
- when you free entry->key.contents, should set .contents to zero so 

  kdc_free_principal doesn't try to also free it.
- when you free entry->alt_key.contents, should set .contents to zero so 

  kdc_free_principal doesn't try to also free it.
- if one != 0, it doesn't return correct err retval

adm_enter_pwd_key
- com_err message for norealm salt case should be changed
- com_err message for onlyrealm salt case should be changed
- com_err message for string_to_key says 'alt_key'
- tempkey.contents not being freed
- alttempkey not being freed
- salt.saltdata.data not being freed upon successful return
- altsalt.saltdata.data not being freed upon successful return
- sometimes salt.saltdata is zero, but routine still frees.
- memset of new_password uses sizeof(new_password). should be pwd.length
- entry->alt_key is being freed, but it was freed inside of adm_modify_kdc

adm5_change
- doesn't check return value of call to krb5_unparse_name

adm_enter_rnd_pwd_key
- doesn't check tempkey->contents before doing a memset. sometimes tempkey 

  is null.
- doesn't free tempkey->contents
- doesn't goto finish if error with krb5_unparse_name, just returns


(kadmin/server/adm_parse.c)

kadmin_parse_and_set
- what are the year, month, and day variables for?
- call to non-existant routine convert_tm_to_sec


(kadmin/server/adm_nego.c)

adm_negotiate_key
- doesn't return if no memory for  
(*next_passwd_phrase_element)->phrase->data


(kadmin/server/adm_process.c)

cpw_keyproc
- always returns 0, even if there's an error


(kadmin/client/kadmin_done.c)

kadm_done
- doesn't free inbuf if an error in mk_priv
- doesn't free msg_data if an error in krb5_write_message


(kadmin/client/kadmin_cpw.c)

kadm_cpw
- doesn't free msg_data if an error in krb5_write_message
- returns a 0 if principal does not exist
- doesn't free msg_data on errors


(kadmin/client/kadmin_cpr.c)

kadm_cpr
- returns a 0 even if Principal does not exist


(kadmin/client/kadmin_del.c)

kadm_del
- doesn't free inbuf if an error in rd_priv
- returns a 0 even if Principal does not exist


(kadmin/client/kadmin_mod.c)

kadm_mod
- near end of routine, frees msg_data.dat, but continues to reference it.


home help back first fref pref prev next nref lref last post