#include "gssapiP_eap.h"
+static const gss_OID_desc gssEapNtPrincipalName = {
+ /* 1.3.6.1.4.1.5322.21.2.1 */
+ 12, "\x06\x0A\x2B\x06\x01\x04\x01\xA9\x4A\x15\x02\x01"
+};
+
+const gss_OID_desc *const GSS_EAP_NT_PRINCIPAL_NAME =
+ &gssEapNtPrincipalName;
+
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_init_context(&kerbCtx);
- krb5_free_principal(kerbCtx, name->kerberosName);
+ krb5_free_principal(kerbCtx, name->krbPrincipal);
if (kerbCtx != NULL) {
krb5_free_context(kerbCtx);
}
+ GSSEAP_MUTEX_DESTROY(&name->mutex);
GSSEAP_FREE(name);
*pName = NULL;
+ *minor = 0;
return GSS_S_COMPLETE;
}