[krbdev.mit.edu #5895] mutex locking issues in memory ccaches

Roland C. Dowdeswell via RT rt-comment at krbdev.mit.edu
Sat Mar 1 12:13:54 EST 2008


There are two mutex locking issues that I've noticed in the memory
ccache.  The first one is in cc_memory.c:krb5_mcc_initialize().  When
it is free(3)ing the existing credentials it does not lock the data
structures and hence two separate threads can run into issues.

I attach a proposed patch for this issue.

I think though, that krb5_mcc_destroy() will also have the same issue
but I haven't provided a patch.

Thanks,

--
    Roland C. Dowdeswell

Index: cc_memory.c
===================================================================
RCS file: /ms/dev/kerberos/mitkrb5/cvs-dirs/mitkrb5-1.4/mitkrb5/src/lib/krb5/ccache/cc_memory.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -u -r1.2 -r1.3
--- cc_memory.c	29 Feb 2008 20:23:23 -0000	1.2
+++ cc_memory.c	29 Feb 2008 20:24:30 -0000	1.3
@@ -118,10 +118,18 @@
 krb5_mcc_initialize(krb5_context context, krb5_ccache id, krb5_principal princ)
 {
     krb5_error_code ret; 
+    krb5_error_code err;
+    krb5_mcc_data *d;
+
+     d = id->data;
+     err = k5_mutex_lock(&d->lock);
+     if (err)
+         return err;
 
     krb5_mcc_free(context, id);
     ret = krb5_copy_principal(context, princ,
 			      &((krb5_mcc_data *)id->data)->prin);
+    k5_mutex_unlock(&d->lock);
     if (ret == KRB5_OK)
         krb5_change_cache();
     return ret;




More information about the krb5-bugs mailing list