(_krb5_extract_ticket): add allow_server_mismatch flag to not check
for correct server in the reply git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@3459 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -119,6 +119,7 @@ _krb5_extract_ticket(krb5_context context,
|
|||||||
krb5_const_pointer keyseed,
|
krb5_const_pointer keyseed,
|
||||||
krb5_addresses *addrs,
|
krb5_addresses *addrs,
|
||||||
unsigned nonce,
|
unsigned nonce,
|
||||||
|
krb5_boolean allow_server_mismatch,
|
||||||
krb5_decrypt_proc decrypt_proc,
|
krb5_decrypt_proc decrypt_proc,
|
||||||
krb5_const_pointer decryptarg)
|
krb5_const_pointer decryptarg)
|
||||||
{
|
{
|
||||||
@@ -162,12 +163,18 @@ _krb5_extract_ticket(krb5_context context,
|
|||||||
rep->part1.ticket.realm);
|
rep->part1.ticket.realm);
|
||||||
if (err)
|
if (err)
|
||||||
goto out;
|
goto out;
|
||||||
|
if(allow_server_mismatch){
|
||||||
|
krb5_free_principal(context, creds->server);
|
||||||
|
creds->server = tmp_principal;
|
||||||
|
tmp_principal = NULL;
|
||||||
|
}else{
|
||||||
tmp = krb5_principal_compare (context, tmp_principal, creds->server);
|
tmp = krb5_principal_compare (context, tmp_principal, creds->server);
|
||||||
krb5_free_principal (context, tmp_principal);
|
krb5_free_principal (context, tmp_principal);
|
||||||
if (!tmp) {
|
if (!tmp) {
|
||||||
err = KRB5KRB_AP_ERR_MODIFIED;
|
err = KRB5KRB_AP_ERR_MODIFIED;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* decrypt */
|
/* decrypt */
|
||||||
|
|
||||||
@@ -570,7 +577,7 @@ krb5_get_in_cred(krb5_context context,
|
|||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
ret = _krb5_extract_ticket(context, &rep, creds, key, keyseed,
|
ret = _krb5_extract_ticket(context, &rep, creds, key, keyseed,
|
||||||
NULL, nonce, decrypt_proc, decryptarg);
|
NULL, nonce, FALSE, decrypt_proc, decryptarg);
|
||||||
memset (key->keyvalue.data, 0, key->keyvalue.length);
|
memset (key->keyvalue.data, 0, key->keyvalue.length);
|
||||||
krb5_free_keyblock (context, key);
|
krb5_free_keyblock (context, key);
|
||||||
free (key);
|
free (key);
|
||||||
|
Reference in New Issue
Block a user