OM_uint32
gssEapAllocName(OM_uint32 *minor, gss_name_t *pName)
{
+ OM_uint32 tmpMinor;
gss_name_t name;
assert(*pName == GSS_C_NO_NAME);
return GSS_S_FAILURE;
}
+ if (GSSEAP_MUTEX_INIT(&name->mutex) != 0) {
+ *minor = errno;
+ gssEapReleaseName(&tmpMinor, &name);
+ return GSS_S_FAILURE;
+ }
+
*pName = name;
return GSS_S_COMPLETE;
OM_uint32
gssEapReleaseName(OM_uint32 *minor, gss_name_t *pName)
{
- gss_name_t name = *pName;
+ gss_name_t name;
krb5_context kerbCtx = NULL;
+ if (pName == NULL) {
+ return GSS_S_COMPLETE;
+ }
+
+ name = *pName;
if (name == GSS_C_NO_NAME) {
return GSS_S_COMPLETE;
}
krb5_free_context(kerbCtx);
}
+ GSSEAP_MUTEX_DESTROY(&name->mutex);
GSSEAP_FREE(name);
*pName = NULL;
+ *minor = 0;
return GSS_S_COMPLETE;
}