diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/kdc/ChangeLog | 6 | ||||
| -rw-r--r-- | src/kdc/kerberos_v4.c | 21 |
2 files changed, 22 insertions, 5 deletions
diff --git a/src/kdc/ChangeLog b/src/kdc/ChangeLog index 398b55e47..f05b0d796 100644 --- a/src/kdc/ChangeLog +++ b/src/kdc/ChangeLog @@ -1,3 +1,9 @@ +Fri Apr 30 00:05:07 1999 Tom Yu <tlyu@mit.edu> + + * kerberos_v4.c (kerberos_v4): Fix bug where krb_create_ticket() + was getting called for an APPL_REQUEST even when there was no + single-DES key, resulting in random weirdness. + Wed Feb 17 17:07:43 1999 Tom Yu <tlyu@mit.edu> * do_as_req.c (process_as_req): Fix to assign kvno to diff --git a/src/kdc/kerberos_v4.c b/src/kdc/kerberos_v4.c index a1efd8b37..4dbd4252c 100644 --- a/src/kdc/kerberos_v4.c +++ b/src/kdc/kerberos_v4.c @@ -885,11 +885,22 @@ kerberos_v4(client, pkt) des_new_random_key(session_key); #endif - krb_create_ticket(tk, k_flags, ad->pname, ad->pinst, - ad->prealm, client_host.s_addr, - (char *) session_key, lifetime, kerb_time.tv_sec, - s_name_data.name, s_name_data.instance, - key); + if (K4KDC_ENCTYPE_OK(k5key.enctype)) { + krb_create_ticket(tk, k_flags, ad->pname, ad->pinst, + ad->prealm, client_host.s_addr, + (char *) session_key, lifetime, + kerb_time.tv_sec, + s_name_data.name, s_name_data.instance, + key); + } else { + krb_cr_tkt_krb5(tk, k_flags, ad->pname, ad->pinst, + ad->prealm, client_host.s_addr, + (char *) session_key, lifetime, + kerb_time.tv_sec, + s_name_data.name, s_name_data.instance, + &k5key); + } + krb5_free_keyblock_contents(kdc_context, &k5key); memset(key, 0, sizeof(key)); memset(key_s, 0, sizeof(key_s)); |
