define gss_any_t for Heimdal, because it doesn't support it
[mech_eap.orig] / util_name.c
index 3cade52..144d26e 100644 (file)
@@ -705,7 +705,7 @@ gssEapDisplayName(OM_uint32 *minor,
      */
 #ifdef HAVE_HEIMDAL_VERSION
     if (KRB_PRINC_REALM(name->krbPrincipal) == NULL ||
-        KRB_PRINC_REALM(name->krBPrincipal)[0] == '\0')
+        KRB_PRINC_REALM(name->krbPrincipal)[0] == '\0')
 #else
     if (KRB_PRINC_REALM(name->krbPrincipal)->length == 0)
 #endif
@@ -738,3 +738,27 @@ gssEapDisplayName(OM_uint32 *minor,
 
     return GSS_S_COMPLETE;
 }
+
+OM_uint32
+gssEapCompareName(OM_uint32 *minor,
+                  gss_name_t name1,
+                  gss_name_t name2,
+                  int *name_equal)
+{
+    krb5_context krbContext;
+
+    *minor = 0;
+
+    if (name1 == GSS_C_NO_NAME && name2 == GSS_C_NO_NAME) {
+        *name_equal = 1;
+    } else if (name1 != GSS_C_NO_NAME && name2 != GSS_C_NO_NAME) {
+        GSSEAP_KRB_INIT(&krbContext);
+
+        /* krbPrincipal is immutable, so lock not required */
+        *name_equal = krb5_principal_compare(krbContext,
+                                             name1->krbPrincipal,
+                                             name2->krbPrincipal);
+    }
+
+    return GSS_S_COMPLETE;
+}