s/GSS_EAP_NT_PRINCIPAL_NAME/GSS_EAP_NT_EAP_NAME
[mech_eap.orig] / util_name.c
index 85f8b3f..35739ec 100644 (file)
 
 #include "gssapiP_eap.h"
 
-static gss_OID_desc gssEapNtPrincipalName = {
+static gss_OID_desc gssEapNtEapName = {
     /* 1.3.6.1.4.1.5322.22.2.1  */
     10, "\x2B\x06\x01\x04\x01\xA9\x4A\x16\x02\x01"
 };
 
-gss_OID GSS_EAP_NT_PRINCIPAL_NAME = &gssEapNtPrincipalName;
+gss_OID GSS_EAP_NT_EAP_NAME = &gssEapNtEapName;
 
 OM_uint32
 gssEapAllocName(OM_uint32 *minor, gss_name_t *pName)
@@ -196,10 +196,18 @@ importUserName(OM_uint32 *minor,
     OM_uint32 major;
     krb5_context krbContext;
     krb5_principal krbPrinc;
-    char *nameString;
+    char *nameString, *realm = NULL;
+    int flags = 0;
+    krb5_error_code code;
 
     GSSEAP_KRB_INIT(&krbContext);
 
+    code = krb5_get_default_realm(krbContext, &realm);
+    if (code != 0 || realm == NULL)
+        flags |= KRB5_PRINCIPAL_PARSE_REQUIRE_REALM;
+    else
+        krb5_free_default_realm(krbContext, realm);
+
     if (nameBuffer == GSS_C_NO_BUFFER) {
         *minor = krb5_copy_principal(krbContext,
                                      krbAnonymousPrincipal(), &krbPrinc);
@@ -210,7 +218,7 @@ importUserName(OM_uint32 *minor,
         if (GSS_ERROR(major))
             return major;
 
-        *minor = krb5_parse_name(krbContext, nameString, &krbPrinc);
+        *minor = krb5_parse_name_flags(krbContext, nameString, flags, &krbPrinc);
         if (*minor != 0) {
             GSSEAP_FREE(nameString);
             return GSS_S_FAILURE;
@@ -404,7 +412,7 @@ gssEapImportName(OM_uint32 *minor,
 {
     struct gss_eap_name_import_provider nameTypes[] = {
         { GSS_C_NT_USER_NAME,               importUserName              },
-        { GSS_EAP_NT_PRINCIPAL_NAME,        importUserName              },
+        { GSS_EAP_NT_EAP_NAME,              importUserName              },
         { GSS_C_NT_HOSTBASED_SERVICE,       importServiceName           },
         { GSS_C_NT_HOSTBASED_SERVICE_X,     importServiceName           },
         { GSS_C_NT_ANONYMOUS,               importAnonymousName         },
@@ -658,7 +666,7 @@ gssEapDisplayName(OM_uint32 *minor,
                                name->krbPrincipal, krbAnonymousPrincipal())) {
         name_type = GSS_C_NT_ANONYMOUS;
     } else {
-        name_type = GSS_EAP_NT_PRINCIPAL_NAME;
+        name_type = GSS_EAP_NT_EAP_NAME;
     }
 
     if (output_name_type != NULL)