svn rev #24753: trunk/ doc/doxy_examples/ src/include/krb5/ src/lib/krb5/ccache/

tsitkova@MIT.EDU tsitkova at MIT.EDU
Tue Mar 29 12:22:06 EDT 2011


http://src.mit.edu/fisheye/changelog/krb5/?cs=24753
Commit By: tsitkova
Log Message:
If the new configuration data that is passed to krb5_cc_set_config is NULL, just remove the old configuration.
Moved short krb5_cc_set_config usage example from krb5.hin into the separate file.



Changed Files:
A   trunk/doc/doxy_examples/cc_set_config.c
U   trunk/src/include/krb5/krb5.hin
U   trunk/src/lib/krb5/ccache/ccfns.c
Added: trunk/doc/doxy_examples/cc_set_config.c
===================================================================
--- trunk/doc/doxy_examples/cc_set_config.c	                        (rev 0)
+++ trunk/doc/doxy_examples/cc_set_config.c	2011-03-29 16:22:05 UTC (rev 24753)
@@ -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);
+}

Modified: trunk/src/include/krb5/krb5.hin
===================================================================
--- trunk/src/include/krb5/krb5.hin	2011-03-29 15:19:41 UTC (rev 24752)
+++ trunk/src/include/krb5/krb5.hin	2011-03-29 16:22:05 UTC (rev 24753)
@@ -4024,21 +4024,14 @@
 
 /** 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

Modified: trunk/src/lib/krb5/ccache/ccfns.c
===================================================================
--- trunk/src/lib/krb5/ccache/ccfns.c	2011-03-29 15:19:41 UTC (rev 24752)
+++ trunk/src/lib/krb5/ccache/ccfns.c	2011-03-29 16:22:05 UTC (rev 24753)
@@ -27,13 +27,13 @@
 #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_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_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_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_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 @@
 }
 
 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_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 @@
     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;




More information about the cvs-krb5 mailing list