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