svn rev #21841: trunk/src/lib/krb5/rcache/

ghudson@MIT.EDU ghudson at MIT.EDU
Fri Jan 30 16:22:32 EST 2009


http://src.mit.edu/fisheye/changelog/krb5/?cs=21841
Commit By: ghudson
Log Message:
Make output parameter value of krb5_rc_resolve_full well-defined on
error return.



Changed Files:
U   trunk/src/lib/krb5/rcache/rc_base.c
Modified: trunk/src/lib/krb5/rcache/rc_base.c
===================================================================
--- trunk/src/lib/krb5/rcache/rc_base.c	2009-01-30 21:21:10 UTC (rev 21840)
+++ trunk/src/lib/krb5/rcache/rc_base.c	2009-01-30 21:22:31 UTC (rev 21841)
@@ -133,13 +133,17 @@
 }
 
 
-krb5_error_code krb5_rc_resolve_full(krb5_context context, krb5_rcache *id, char *string_name)
+krb5_error_code krb5_rc_resolve_full(krb5_context context, krb5_rcache *idptr,
+                                     char *string_name)
 {
     char *type;
     char *residual;
     krb5_error_code retval;
     unsigned int diff;
+    krb5_rcache id;
 
+    *idptr = NULL;
+
     if (!(residual = strchr(string_name,':')))
         return KRB5_RC_PARSE;
 
@@ -149,22 +153,23 @@
     (void) strncpy(type, string_name, diff);
     type[residual - string_name] = '\0';
 
-    if (!(*id = (krb5_rcache) malloc(sizeof(**id)))) {
+    if (!(id = (krb5_rcache) malloc(sizeof(*id)))) {
         FREE(type);
         return KRB5_RC_MALLOC;
     }
 
-    if ((retval = krb5_rc_resolve_type(context, id,type))) {
+    if ((retval = krb5_rc_resolve_type(context, &id,type))) {
         FREE(type);
-        FREE(*id);
+        FREE(id);
         return retval;
     }
     FREE(type);
-    if ((retval = krb5_rc_resolve(context, *id,residual + 1))) {
-        k5_mutex_destroy(&(*id)->lock);
-        FREE(*id);
+    if ((retval = krb5_rc_resolve(context, id,residual + 1))) {
+        k5_mutex_destroy(&id->lock);
+        FREE(id);
         return retval;
     }
-    (*id)->magic = KV5M_RCACHE;
+    id->magic = KV5M_RCACHE;
+    *idptr = id;
     return retval;
 }




More information about the cvs-krb5 mailing list