If the new configuration data that is passed to krb5_cc_set_config is NULL, just...
authorZhanna Tsitkov <tsitkova@mit.edu>
Tue, 29 Mar 2011 16:22:05 +0000 (16:22 +0000)
committerZhanna Tsitkov <tsitkova@mit.edu>
Tue, 29 Mar 2011 16:22:05 +0000 (16:22 +0000)
Moved short krb5_cc_set_config usage example from krb5.hin into the separate file.

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@24753 dc483132-0cff-0310-8789-dd5450dbe970

doc/doxy_examples/cc_set_config.c [new file with mode: 0644]
src/include/krb5/krb5.hin
src/lib/krb5/ccache/ccfns.c

diff --git a/doc/doxy_examples/cc_set_config.c b/doc/doxy_examples/cc_set_config.c
new file mode 100644 (file)
index 0000000..6e3f182
--- /dev/null
@@ -0,0 +1,16 @@
+/** @example  cc_set_config.c
+ *
+ *  Demo for krb5_cc_set_config function
+ */
+#include <k5-int.h>
+
+krb5_error_code
+func(krb5_context context, krb5_ccache id,
+     krb5_const_principal principal, const char *key)
+{
+   krb5_data config_data;
+
+   config_data.data = "yes";
+   config_data.length = strlen(config_data.data);
+   return  krb5_cc_set_config(context, id, principal, key, &config_data);
+}
index 977977e87ab2a1edd1d9722efacc50e28e2de4af..0e7fd3fe5d13fa542d4770a85943b74010255f10 100644 (file)
@@ -4024,21 +4024,14 @@ krb5_cc_get_config(krb5_context context, krb5_ccache id,
 
 /** Store some configuration for the credential cache in the cache.
  *
- * @param context         a Keberos context [input,output]
- * @param id              the credential cache to store the data for. [input]
- * @param principal       configuration for a specific principal; if NULL, global for the whole cache.[input]
- * @param key             name under which the configuraion is stored.[input]
- * @param data            data to store. [input]
+ * @param [in,out] context         a Keberos context
+ * @param [in]     id              the credential cache to store the data for.
+ * @param [in]     principal       configuration for a specific principal; if NULL, global for the whole cache.
+ * @param [in]     key             name under which the configuraion is stored.
+ * @param [in]     data            data to store. If NULL, old configuration is removed.
  *
  * @note Existing configuration under the same key is over-written.
  *
- * @code
- * Example:
- *   config_data.data = "yes";
- *   config_data.length = strlen(config_data.data);
- *   krb5_cc_set_config(context, id, principal,key, &config_data);
- * @endcode
- *
  * @retval
  * 0  Success
  * @return
index 7d294e155c0e1fd6ff5fa05079060d96f0afb957..b92824d0a5a6f255460a0cc994620b88b95cf260 100644 (file)
 #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);
@@ -48,21 +48,21 @@ krb5_cc_initialize(krb5_context context, krb5_ccache 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;
@@ -97,9 +97,9 @@ krb5_cc_store_cred (krb5_context context, krb5_ccache cache,
 }
 
 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;
@@ -123,74 +123,74 @@ krb5_cc_retrieve_cred (krb5_context context, krb5_ccache cache,
 }
 
 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);
 }
@@ -199,9 +199,9 @@ static const char conf_realm[] = "X-CACHECONF:";
 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;
@@ -233,8 +233,8 @@ build_conf_principals (krb5_context context, krb5_ccache id,
 }
 
 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;
 
@@ -253,9 +253,9 @@ krb5_is_config_principal (krb5_context context,
 }
 
 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;
@@ -267,25 +267,31 @@ krb5_cc_set_config (krb5_context context, krb5_ccache id,
     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;