(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:
@@ -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;
|
||||||
|
Reference in New Issue
Block a user