Get creds for client name passed in.

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@4648 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Johan Danielsson
1998-03-21 23:55:09 +00:00
parent a101e8d669
commit 8c91994194

View File

@@ -97,27 +97,30 @@ _kadm5_c_init_context(kadm5_client_context **ctx,
static krb5_error_code static krb5_error_code
get_cred_cache(krb5_context context, krb5_ccache *cc, get_cred_cache(krb5_context context, krb5_ccache *cc,
krb5_prompter_fct prompter) const char *client_name, krb5_prompter_fct prompter)
{ {
krb5_ccache id; krb5_ccache id;
krb5_creds in, *out = NULL; krb5_creds in, *out = NULL;
krb5_principal client, server; krb5_principal client, server = NULL;
krb5_error_code ret; krb5_error_code ret;
ret = krb5_cc_default(context, &id); if(client_name == NULL) {
ret = krb5_cc_get_principal(context, id, &client); ret = krb5_cc_default(context, &id);
ret = krb5_parse_name(context, KADM5_ADMIN_SERVICE, &server); ret = krb5_cc_get_principal(context, id, &client);
memset(&in, 0, sizeof(in)); ret = krb5_parse_name(context, KADM5_ADMIN_SERVICE, &server);
in.client = client; memset(&in, 0, sizeof(in));
in.server = server; in.client = client;
ret = krb5_get_credentials(context, 0, id, &in, &out); in.server = server;
if(out != NULL) ret = krb5_get_credentials(context, 0, id, &in, &out);
krb5_free_creds(context, out); if(out != NULL)
if(ret == 0) { krb5_free_creds(context, out);
*cc = id; if(ret == 0) {
goto out; *cc = id;
} goto out;
krb5_cc_close(context, id); }
krb5_cc_close(context, id);
} else
krb5_parse_name(context, client_name, &client);
ret = krb5_cc_gen_new(context, &krb5_mcc_ops, &id); ret = krb5_cc_gen_new(context, &krb5_mcc_ops, &id);
{ {
@@ -200,7 +203,7 @@ kadm5_c_init_with_password_ctx(krb5_context context,
close(s); close(s);
return KADM5_RPC_ERROR; return KADM5_RPC_ERROR;
} }
ret = get_cred_cache(context, &cc, krb5_prompter_posix); ret = get_cred_cache(context, &cc, client_name, krb5_prompter_posix);
krb5_parse_name(context, KADM5_ADMIN_SERVICE, &server); krb5_parse_name(context, KADM5_ADMIN_SERVICE, &server);
ctx->ac = NULL; ctx->ac = NULL;
ret = krb5_sendauth(context, &ctx->ac, &s, KADMIN_APPL_VERSION, NULL, ret = krb5_sendauth(context, &ctx->ac, &s, KADMIN_APPL_VERSION, NULL,