#include "k5-int.h"
const char * KRB5_CALLCONV
-krb5_cc_get_name (krb5_context context, krb5_ccache cache)
+krb5_cc_get_name(krb5_context context, krb5_ccache cache)
{
return cache->ops->get_name(context, cache);
}
krb5_error_code KRB5_CALLCONV
-krb5_cc_gen_new (krb5_context context, krb5_ccache *cache)
+krb5_cc_gen_new(krb5_context context, krb5_ccache *cache)
{
TRACE_CC_GEN_NEW(context, cache);
return (*cache)->ops->gen_new(context, cache);
}
krb5_error_code KRB5_CALLCONV
-krb5_cc_destroy (krb5_context context, krb5_ccache cache)
+krb5_cc_destroy(krb5_context context, krb5_ccache cache)
{
TRACE_CC_DESTROY(context, cache);
return cache->ops->destroy(context, cache);
}
krb5_error_code KRB5_CALLCONV
-krb5_cc_close (krb5_context context, krb5_ccache cache)
+krb5_cc_close(krb5_context context, krb5_ccache cache)
{
return cache->ops->close(context, cache);
}
krb5_error_code KRB5_CALLCONV
-krb5_cc_store_cred (krb5_context context, krb5_ccache cache,
- krb5_creds *creds)
+krb5_cc_store_cred(krb5_context context, krb5_ccache cache,
+ krb5_creds *creds)
{
krb5_error_code ret;
krb5_ticket *tkt;
}
krb5_error_code KRB5_CALLCONV
-krb5_cc_retrieve_cred (krb5_context context, krb5_ccache cache,
- krb5_flags flags, krb5_creds *mcreds,
- krb5_creds *creds)
+krb5_cc_retrieve_cred(krb5_context context, krb5_ccache cache,
+ krb5_flags flags, krb5_creds *mcreds,
+ krb5_creds *creds)
{
krb5_error_code ret;
krb5_data tmprealm;
}
krb5_error_code KRB5_CALLCONV
-krb5_cc_get_principal (krb5_context context, krb5_ccache cache,
- krb5_principal *principal)
+krb5_cc_get_principal(krb5_context context, krb5_ccache cache,
+ krb5_principal *principal)
{
return cache->ops->get_princ(context, cache, principal);
}
krb5_error_code KRB5_CALLCONV
-krb5_cc_start_seq_get (krb5_context context, krb5_ccache cache,
- krb5_cc_cursor *cursor)
+krb5_cc_start_seq_get(krb5_context context, krb5_ccache cache,
+ krb5_cc_cursor *cursor)
{
return cache->ops->get_first(context, cache, cursor);
}
krb5_error_code KRB5_CALLCONV
-krb5_cc_next_cred (krb5_context context, krb5_ccache cache,
- krb5_cc_cursor *cursor, krb5_creds *creds)
+krb5_cc_next_cred(krb5_context context, krb5_ccache cache,
+ krb5_cc_cursor *cursor, krb5_creds *creds)
{
return cache->ops->get_next(context, cache, cursor, creds);
}
krb5_error_code KRB5_CALLCONV
-krb5_cc_end_seq_get (krb5_context context, krb5_ccache cache,
- krb5_cc_cursor *cursor)
+krb5_cc_end_seq_get(krb5_context context, krb5_ccache cache,
+ krb5_cc_cursor *cursor)
{
return cache->ops->end_get(context, cache, cursor);
}
krb5_error_code KRB5_CALLCONV
-krb5_cc_remove_cred (krb5_context context, krb5_ccache cache, krb5_flags flags,
- krb5_creds *creds)
+krb5_cc_remove_cred(krb5_context context, krb5_ccache cache, krb5_flags flags,
+ krb5_creds *creds)
{
TRACE_CC_REMOVE(context, cache, creds);
return cache->ops->remove_cred(context, cache, flags, creds);
}
krb5_error_code KRB5_CALLCONV
-krb5_cc_set_flags (krb5_context context, krb5_ccache cache, krb5_flags flags)
+krb5_cc_set_flags(krb5_context context, krb5_ccache cache, krb5_flags flags)
{
return cache->ops->set_flags(context, cache, flags);
}
krb5_error_code KRB5_CALLCONV
-krb5_cc_get_flags (krb5_context context, krb5_ccache cache, krb5_flags *flags)
+krb5_cc_get_flags(krb5_context context, krb5_ccache cache, krb5_flags *flags)
{
return cache->ops->get_flags(context, cache, flags);
}
const char * KRB5_CALLCONV
-krb5_cc_get_type (krb5_context context, krb5_ccache cache)
+krb5_cc_get_type(krb5_context context, krb5_ccache cache)
{
return cache->ops->prefix;
}
krb5_error_code KRB5_CALLCONV
-krb5_cc_last_change_time (krb5_context context, krb5_ccache ccache,
- krb5_timestamp *change_time)
+krb5_cc_last_change_time(krb5_context context, krb5_ccache ccache,
+ krb5_timestamp *change_time)
{
return ccache->ops->lastchange(context, ccache, change_time);
}
krb5_error_code KRB5_CALLCONV
-krb5_cc_lock (krb5_context context, krb5_ccache ccache)
+krb5_cc_lock(krb5_context context, krb5_ccache ccache)
{
return ccache->ops->lock(context, ccache);
}
krb5_error_code KRB5_CALLCONV
-krb5_cc_unlock (krb5_context context, krb5_ccache ccache)
+krb5_cc_unlock(krb5_context context, krb5_ccache ccache)
{
return ccache->ops->unlock(context, ccache);
}
static const char conf_name[] = "krb5_ccache_conf_data";
static krb5_error_code
-build_conf_principals (krb5_context context, krb5_ccache id,
- krb5_const_principal principal,
- const char *name, krb5_creds *cred)
+build_conf_principals(krb5_context context, krb5_ccache id,
+ krb5_const_principal principal,
+ const char *name, krb5_creds *cred)
{
krb5_principal client;
krb5_error_code ret;
}
krb5_boolean KRB5_CALLCONV
-krb5_is_config_principal (krb5_context context,
- krb5_const_principal principal)
+krb5_is_config_principal(krb5_context context,
+ krb5_const_principal principal)
{
const krb5_data *realm;
}
krb5_error_code KRB5_CALLCONV
-krb5_cc_set_config (krb5_context context, krb5_ccache id,
- krb5_const_principal principal,
- const char *key, krb5_data *data)
+krb5_cc_set_config(krb5_context context, krb5_ccache id,
+ krb5_const_principal principal,
+ const char *key, krb5_data *data)
{
krb5_error_code ret;
krb5_creds cred;
if (ret)
goto out;
- cred.ticket.data = malloc(data->length);
- if (cred.ticket.data == NULL) {
- krb5_set_error_message(context, ENOMEM, "malloc: out of memory");
- return ENOMEM;
- }
- cred.ticket.length = data->length;
- memcpy(cred.ticket.data, data->data, data->length);
+ /* Remove old configuration */
+ ret = krb5_cc_remove_cred(context, id, 0, &cred);
+ if (ret && ret != KRB5_CC_NOTFOUND)
+ goto out;
- ret = krb5_cc_store_cred(context, id, &cred);
+ if (data) {
+ cred.ticket.data = malloc(data->length);
+ if (cred.ticket.data == NULL) {
+ krb5_set_error_message(context, ENOMEM, "malloc: out of memory");
+ return ENOMEM;
+ }
+ cred.ticket.length = data->length;
+ memcpy(cred.ticket.data, data->data, data->length);
+ ret = krb5_cc_store_cred(context, id, &cred);
+ }
out:
krb5_free_cred_contents(context, &cred);
return ret;
}
krb5_error_code KRB5_CALLCONV
-krb5_cc_get_config (krb5_context context, krb5_ccache id,
- krb5_const_principal principal,
- const char *key, krb5_data *data)
+krb5_cc_get_config(krb5_context context, krb5_ccache id,
+ krb5_const_principal principal,
+ const char *key, krb5_data *data)
{
krb5_creds mcred, cred;
krb5_error_code ret;