Several fixes for cross-realm.

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@3460 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Johan Danielsson
1997-09-10 19:20:12 +00:00
parent 7e533905be
commit e48bd867e4

View File

@@ -223,7 +223,8 @@ get_cred_kdc(krb5_context context, krb5_ccache id, krb5_kdc_flags flags,
* Send and receive * Send and receive
*/ */
ret = krb5_sendto_kdc (context, &enc, &krbtgt->server->realm, &resp); ret = krb5_sendto_kdc (context, &enc,
&krbtgt->server->name.name_string.val[1], &resp);
if(ret) if(ret)
goto out; goto out;
@@ -249,6 +250,7 @@ get_cred_kdc(krb5_context context, krb5_ccache id, krb5_kdc_flags flags,
NULL, NULL,
&krbtgt->addresses, &krbtgt->addresses,
nonce, nonce,
TRUE,
NULL, NULL,
NULL); NULL);
krb5_free_kdc_rep(context, &rep); krb5_free_kdc_rep(context, &rep);
@@ -257,7 +259,7 @@ get_cred_kdc(krb5_context context, krb5_ccache id, krb5_kdc_flags flags,
}else if(krb5_rd_error(context, &resp, &error) == 0){ }else if(krb5_rd_error(context, &resp, &error) == 0){
ret = error.error_code; ret = error.error_code;
free_KRB_ERROR(&error); free_KRB_ERROR(&error);
}else if(((char*)resp.data)[0] == 4) }else if(resp.data && ((char*)resp.data)[0] == 4)
ret = KRB5KRB_AP_ERR_V4_REPLY; ret = KRB5KRB_AP_ERR_V4_REPLY;
else else
ret = KRB5KRB_AP_ERR_MSG_TYPE; ret = KRB5KRB_AP_ERR_MSG_TYPE;
@@ -388,14 +390,14 @@ krb5_get_credentials(krb5_context context,
while(strcmp(tgt_inst, server_realm)){ while(strcmp(tgt_inst, server_realm)){
krb5_free_principal(context, tmp_creds.server); krb5_free_principal(context, tmp_creds.server);
ret = krb5_make_principal(context, &tmp_creds.server, ret = krb5_make_principal(context, &tmp_creds.server,
server_realm, "krbtgt", tgt_inst, NULL); tgt_inst, "krbtgt", server_realm, NULL);
if(ret) return ret; if(ret) return ret;
ret = krb5_free_creds_contents(context, tgt); ret = krb5_free_creds_contents(context, tgt);
if(ret) return ret; if(ret) return ret;
free(tgt); free(tgt);
ret = krb5_get_credentials(context, 0, ccache, &tmp_creds, &tgt); ret = krb5_get_credentials(context, 0, ccache, &tmp_creds, &tgt);
if(ret) return ret; if(ret) return ret;
tgt_inst = tgt->server->name.name_string.val[2]; tgt_inst = tgt->server->name.name_string.val[1];
} }