(get_kadm_ticket): only remove creds if krb5_get_credentials was

succesful.
(get_new_cache): return better error codes and return earlier.
(get_cred_cache): only delete default_client if it's different from
client
(kadm5_c_init_with_context): return a more descriptive error.


git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@5312 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Assar Westerlund
1999-01-30 19:39:59 +00:00
parent 34ea75f10f
commit cb09ff0795

View File

@@ -115,7 +115,7 @@ get_kadm_ticket(krb5_context context,
if(ret) if(ret)
return ret; return ret;
ret = krb5_get_credentials(context, 0, id, &in, &out); ret = krb5_get_credentials(context, 0, id, &in, &out);
if(out != NULL) if(ret == 0)
krb5_free_creds(context, out); krb5_free_creds(context, out);
krb5_free_principal(context, in.server); krb5_free_principal(context, in.server);
return ret; return ret;
@@ -170,10 +170,9 @@ get_new_cache(krb5_context context,
abort(); abort();
case KRB5KRB_AP_ERR_BAD_INTEGRITY: case KRB5KRB_AP_ERR_BAD_INTEGRITY:
case KRB5KRB_AP_ERR_MODIFIED: case KRB5KRB_AP_ERR_MODIFIED:
ret = KADM5_BAD_PASSWORD; return KADM5_BAD_PASSWORD;
break;
default: default:
break; return ret;
} }
ret = krb5_cc_gen_new(context, &krb5_mcc_ops, &id); ret = krb5_cc_gen_new(context, &krb5_mcc_ops, &id);
if(ret) if(ret)
@@ -258,6 +257,7 @@ get_cred_cache(krb5_context context,
/* get creds via AS request */ /* get creds via AS request */
if(id) if(id)
krb5_cc_close(context, id); krb5_cc_close(context, id);
if (client != default_client)
krb5_free_principal(context, default_client); krb5_free_principal(context, default_client);
ret = get_new_cache(context, client, password, prompter, keytab, ret = get_new_cache(context, client, password, prompter, keytab,
@@ -283,9 +283,11 @@ kadm5_c_init_with_context(krb5_context context,
kadm5_client_context *ctx; kadm5_client_context *ctx;
krb5_principal server; krb5_principal server;
krb5_ccache cc; krb5_ccache cc;
krb5_error *error;
int s; int s;
struct sockaddr_in sin; struct sockaddr_in sin;
struct hostent *hp; struct hostent *hp;
ret = _kadm5_c_init_context(&ctx, realm_params, context); ret = _kadm5_c_init_context(&ctx, realm_params, context);
if(ret) if(ret)
return ret; return ret;
@@ -326,7 +328,7 @@ kadm5_c_init_with_context(krb5_context context,
krb5_cc_close(context, cc); krb5_cc_close(context, cc);
if(ret) { if(ret) {
close(s); close(s);
return KADM5_FAILURE; return ret;
} }
ctx->sock = s; ctx->sock = s;
*server_handle = ctx; *server_handle = ctx;