(krb5_get_forwarded_creds): try to handle errors better for previous commit

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@13256 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Love Hörnquist Åstrand
2004-01-05 15:00:50 +00:00
parent f342516288
commit 85575388c3

View File

@@ -156,7 +156,7 @@ krb5_get_forwarded_creds (krb5_context context,
{ {
krb5_error_code ret; krb5_error_code ret;
krb5_creds *out_creds; krb5_creds *out_creds;
krb5_addresses addrs; krb5_addresses addrs, *paddrs;
KRB_CRED cred; KRB_CRED cred;
KrbCredInfo *krb_cred_info; KrbCredInfo *krb_cred_info;
EncKrbCredPart enc_krb_cred_part; EncKrbCredPart enc_krb_cred_part;
@@ -168,23 +168,33 @@ krb5_get_forwarded_creds (krb5_context context,
struct addrinfo *ai; struct addrinfo *ai;
int save_errno; int save_errno;
krb5_keyblock *key; krb5_keyblock *key;
krb5_creds *krbtgt; krb5_creds *ticket;
char *realm;
if (in_creds->client && in_creds->client->realm)
realm = in_creds->client->realm;
else
realm = in_creds->server->realm;
addrs.len = 0; addrs.len = 0;
addrs.val = NULL; addrs.val = NULL;
paddrs = &addrs;
ret = _krb5_get_krbtgt (context,
ccache,
in_creds->server->realm,
&krbtgt);
if(ret)
return ret;
/* /*
* If tickets are address-less, forward address-less tickets. * If tickets are address-less, forward address-less tickets.
*/ */
if (krbtgt->addresses.len != 0) { ret = _krb5_get_krbtgt (context,
ccache,
realm,
&ticket);
if(ret == 0) {
if (ticket->addresses.len == 0)
paddrs = NULL;
krb5_free_creds (context, ticket);
}
if (paddrs != NULL) {
ret = getaddrinfo (hostname, NULL, NULL, &ai); ret = getaddrinfo (hostname, NULL, NULL, &ai);
if (ret) { if (ret) {
@@ -199,14 +209,13 @@ krb5_get_forwarded_creds (krb5_context context,
if (ret) if (ret)
return ret; return ret;
} }
krb5_free_creds (context, krbtgt);
kdc_flags.i = flags; kdc_flags.i = flags;
ret = krb5_get_kdc_cred (context, ret = krb5_get_kdc_cred (context,
ccache, ccache,
kdc_flags, kdc_flags,
addrs.len != 0 ? &addrs : NULL, paddrs,
NULL, NULL,
in_creds, in_creds,
&out_creds); &out_creds);