More bits for server referral.
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@22748 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -320,7 +320,6 @@ _krb5_extract_ticket(krb5_context context,
|
|||||||
{
|
{
|
||||||
krb5_error_code ret;
|
krb5_error_code ret;
|
||||||
krb5_principal tmp_principal;
|
krb5_principal tmp_principal;
|
||||||
int tmp;
|
|
||||||
size_t len;
|
size_t len;
|
||||||
time_t tmp_time;
|
time_t tmp_time;
|
||||||
krb5_timestamp sec_now;
|
krb5_timestamp sec_now;
|
||||||
@@ -355,7 +354,7 @@ _krb5_extract_ticket(krb5_context context,
|
|||||||
if (ret)
|
if (ret)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
/* check referrals and save */
|
/* check client referral and save principal */
|
||||||
/* anonymous here ? */
|
/* anonymous here ? */
|
||||||
if((flags & EXTRACT_TICKET_ALLOW_CNAME_MISMATCH) == 0) {
|
if((flags & EXTRACT_TICKET_ALLOW_CNAME_MISMATCH) == 0) {
|
||||||
ret = check_client_referral(context, rep,
|
ret = check_client_referral(context, rep,
|
||||||
@@ -370,34 +369,23 @@ _krb5_extract_ticket(krb5_context context,
|
|||||||
krb5_free_principal (context, creds->client);
|
krb5_free_principal (context, creds->client);
|
||||||
creds->client = tmp_principal;
|
creds->client = tmp_principal;
|
||||||
|
|
||||||
ret = check_server_referral(context, rep, creds->server,
|
/* check server referral and save principal */
|
||||||
&creds->session);
|
|
||||||
if (ret)
|
|
||||||
goto out;
|
|
||||||
|
|
||||||
/* save principals */
|
|
||||||
|
|
||||||
/* compare server */
|
|
||||||
ret = _krb5_principalname2krb5_principal (context,
|
ret = _krb5_principalname2krb5_principal (context,
|
||||||
&tmp_principal,
|
&tmp_principal,
|
||||||
rep->kdc_rep.ticket.sname,
|
rep->kdc_rep.ticket.sname,
|
||||||
rep->kdc_rep.ticket.realm);
|
rep->kdc_rep.ticket.realm);
|
||||||
if (ret)
|
if (ret)
|
||||||
goto out;
|
goto out;
|
||||||
if(flags & EXTRACT_TICKET_ALLOW_SERVER_MISMATCH){
|
if((flags & EXTRACT_TICKET_ALLOW_SERVER_MISMATCH) == 0){
|
||||||
krb5_free_principal(context, creds->server);
|
ret = check_server_referral(context, rep, creds->server,
|
||||||
creds->server = tmp_principal;
|
&creds->session);
|
||||||
tmp_principal = NULL;
|
if (ret) {
|
||||||
} else {
|
krb5_free_principal (context, tmp_principal);
|
||||||
tmp = krb5_principal_compare (context, tmp_principal,
|
|
||||||
creds->server);
|
|
||||||
krb5_free_principal (context, tmp_principal);
|
|
||||||
if (!tmp) {
|
|
||||||
ret = KRB5KRB_AP_ERR_MODIFIED;
|
|
||||||
krb5_clear_error_string (context);
|
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
krb5_free_principal(context, creds->server);
|
||||||
|
creds->server = tmp_principal;
|
||||||
|
|
||||||
/* verify names */
|
/* verify names */
|
||||||
if(flags & EXTRACT_TICKET_MATCH_REALM){
|
if(flags & EXTRACT_TICKET_MATCH_REALM){
|
||||||
|
Reference in New Issue
Block a user