diff --git a/kdc/kerberos5.c b/kdc/kerberos5.c index f4d7ee9d0..a06cdd27d 100644 --- a/kdc/kerberos5.c +++ b/kdc/kerberos5.c @@ -861,6 +861,39 @@ _kdc_check_addresses(krb5_context context, return result; } +/* + * + */ + +static krb5_boolean +send_pac_p(krb5_context context, KDC_REQ *req) +{ + krb5_error_code ret; + PA_PAC_REQUEST pacreq; + PA_DATA *pa; + int i = 0; + + pa = _kdc_find_padata(req, &i, KRB5_PADATA_PA_PAC_REQUEST); + if (pa == NULL) + return TRUE; + + ret = decode_PA_PAC_REQUEST(pa->padata_value.data, + pa->padata_value.length, + &pacreq, + NULL); + if (ret) + return TRUE; + i = pacreq.include_pac; + free_PA_PAC_REQUEST(&pacreq); + if (i == 0) + return FALSE; + return TRUE; +} + +/* + * + */ + krb5_error_code _kdc_as_rep(krb5_context context, krb5_kdc_configuration *config, @@ -1503,7 +1536,7 @@ _kdc_as_rep(krb5_context context, } /* Add the PAC */ - { + if (send_pac_p(context, req)) { krb5_pac p = NULL; krb5_data data;