allow a cross realm ticket returned in the non referrals case
This commit is contained in:
@@ -443,9 +443,7 @@ check_server_referral(krb5_context context,
|
|||||||
return KRB5KRB_AP_ERR_MODIFIED;
|
return KRB5KRB_AP_ERR_MODIFIED;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (returned->name.name_string.len == 2 &&
|
if (krb5_principal_is_krbtgt(context, returned)) {
|
||||||
strcmp(returned->name.name_string.val[0], KRB5_TGS_NAME) == 0)
|
|
||||||
{
|
|
||||||
const char *realm = returned->name.name_string.val[1];
|
const char *realm = returned->name.name_string.val[1];
|
||||||
|
|
||||||
if (ref.referred_realm == NULL
|
if (ref.referred_realm == NULL
|
||||||
@@ -485,7 +483,13 @@ check_server_referral(krb5_context context,
|
|||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
noreferral:
|
noreferral:
|
||||||
if (krb5_principal_compare(context, requested, returned) == FALSE) {
|
/*
|
||||||
|
* Expect excact match or that we got a krbtgt
|
||||||
|
*/
|
||||||
|
if (krb5_principal_compare(context, requested, returned) != TRUE &&
|
||||||
|
(krb5_realm_compare(context, requested, returned) != TRUE &&
|
||||||
|
krb5_principal_is_krbtgt(context, returned) != TRUE))
|
||||||
|
{
|
||||||
krb5_set_error_message(context, KRB5KRB_AP_ERR_MODIFIED,
|
krb5_set_error_message(context, KRB5KRB_AP_ERR_MODIFIED,
|
||||||
N_("Not same server principal returned "
|
N_("Not same server principal returned "
|
||||||
"as requested", ""));
|
"as requested", ""));
|
||||||
|
Reference in New Issue
Block a user