remove util_alloc.c
[mech_eap.git] / inquire_cred.c
index 986bdf6..05ae554 100644 (file)
@@ -42,23 +42,28 @@ gss_inquire_cred(OM_uint32 *minor,
 {
     OM_uint32 major = GSS_S_COMPLETE;
 
+    if (cred == NULL)
+        return GSS_S_NO_CRED;
+
+    GSSEAP_MUTEX_LOCK(&cred->mutex);
+
     if (name != NULL) {
-        major = gss_duplicate_name(minor, cred->name, name);
+        major = gssEapDuplicateName(minor, cred->name, name);
         if (GSS_ERROR(major))
             goto cleanup;
     }
 
     if (pLifetime != NULL) {
-        time_t now = time(NULL);
-        time_t lifetime; 
-        if (cred->expiryTime == ~0) 
-            lifetime = GSS_C_INDEFINITE; 
-        else 
-            lifetime = now - cred->expiryTime;
+        time_t now, lifetime;
 
-        if (lifetime < 0)
-            lifetime = 0;
+        if (cred->expiryTime == 0) {
+            lifetime = GSS_C_INDEFINITE;
+        } else  {
+            now = time(NULL);
+            lifetime = now - cred->expiryTime;
+            if (lifetime < 0)
+                lifetime = 0;
+        }
 
         *pLifetime = lifetime;
     }
@@ -89,5 +94,7 @@ gss_inquire_cred(OM_uint32 *minor,
     }
 
 cleanup:
+    GSSEAP_MUTEX_UNLOCK(&cred->mutex);
+
     return major;
 }