File MITKRB5-SA-2012-001.dif of Package krb5.1610
Index: krb5-1.9.1/src/kdc/kdc_preauth.c
===================================================================
--- krb5-1.9.1.orig/src/kdc/kdc_preauth.c
+++ krb5-1.9.1/src/kdc/kdc_preauth.c
@@ -1562,7 +1562,8 @@ etype_info_helper(krb5_context context,
continue;
}
- if (request_contains_enctype(context, request, db_etype)) {
+ if (krb5_is_permitted_enctype(context, db_etype) &&
+ request_contains_enctype(context, request, db_etype)) {
retval = _make_etype_info_entry(context, client->princ,
client_key, db_etype,
&entry[i], etype_info2);
Index: krb5-1.9.1/src/kdc/kdc_util.c
===================================================================
--- krb5-1.9.1.orig/src/kdc/kdc_util.c
+++ krb5-1.9.1/src/kdc/kdc_util.c
@@ -2465,6 +2465,7 @@ kdc_handle_protected_negotiation(krb5_da
return 0;
pa.magic = KV5M_PA_DATA;
pa.pa_type = KRB5_ENCPADATA_REQ_ENC_PA_REP;
+ memset(&checksum, 0, sizeof(checksum));
retval = krb5_c_make_checksum(kdc_context,0, reply_key,
KRB5_KEYUSAGE_AS_REQ, req_pkt, &checksum);
if (retval != 0)
Index: krb5-1.9.1/src/lib/kdb/kdb_default.c
===================================================================
--- krb5-1.9.1.orig/src/lib/kdb/kdb_default.c
+++ krb5-1.9.1/src/lib/kdb/kdb_default.c
@@ -64,6 +64,9 @@ krb5_dbe_def_search_enctype(kcontext, db
krb5_boolean saw_non_permitted = FALSE;
ret = 0;
+ if (ktype != -1 && !krb5_is_permitted_enctype(kcontext, ktype))
+ return KRB5_KDB_NO_PERMITTED_KEY;
+
if (kvno == -1 && stype == -1 && ktype == -1)
kvno = 0;