From: Greg Hudson Date: Wed, 6 May 2020 20:03:13 +0000 (-0400) Subject: Omit KDC indicator check for S4U2Self requests X-Git-Tag: krb5-1.19-beta1~85 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F1067%2Fhead;p=thirdparty%2Fkrb5.git Omit KDC indicator check for S4U2Self requests As there was no initial ticket exchange from the client for an S4U2Self request, the auth indicator check is inapplicable (and would always fail if any auth indicators are required). ticket: 8902 (new) --- diff --git a/src/kdc/do_tgs_req.c b/src/kdc/do_tgs_req.c index 241f34e2a8..463a9c0dd8 100644 --- a/src/kdc/do_tgs_req.c +++ b/src/kdc/do_tgs_req.c @@ -392,8 +392,8 @@ process_tgs_req(krb5_kdc_req *request, krb5_data *pkt, } authtime = subject_tkt->times.authtime; - /* Extract auth indicators from the subject ticket, except for S4U2Self - * requests (where the client didn't authenticate). */ + /* Extract and check auth indicators from the subject ticket, except for + * S4U2Self requests (where the client didn't authenticate). */ if (s4u_x509_user == NULL) { errcode = get_auth_indicators(kdc_context, subject_tkt, local_tgt, &local_tgt_key, &auth_indicators); @@ -401,12 +401,12 @@ process_tgs_req(krb5_kdc_req *request, krb5_data *pkt, status = "GET_AUTH_INDICATORS"; goto cleanup; } - } - errcode = check_indicators(kdc_context, server, auth_indicators); - if (errcode) { - status = "HIGHER_AUTHENTICATION_REQUIRED"; - goto cleanup; + errcode = check_indicators(kdc_context, server, auth_indicators); + if (errcode) { + status = "HIGHER_AUTHENTICATION_REQUIRED"; + goto cleanup; + } } if (is_referral)