for now, allow default GSS EAP realm to be set
authorLuke Howard <lukeh@padl.com>
Thu, 17 Mar 2011 15:50:45 +0000 (02:50 +1100)
committerLuke Howard <lukeh@padl.com>
Thu, 17 Mar 2011 15:51:20 +0000 (02:51 +1100)
with GSSEAP_DEFAULT_REALM environment variable

util_name.c

index fa5b108..daa059f 100644 (file)
@@ -196,10 +196,20 @@ importUserName(OM_uint32 *minor,
     OM_uint32 major;
     krb5_context krbContext;
     krb5_principal krbPrinc;
-    char *nameString;
+    char *nameString, *realm;
+    int flags = 0;
 
     GSSEAP_KRB_INIT(&krbContext);
 
+    realm = getenv("GSSEAP_DEFAULT_REALM");
+    if (realm != NULL) {
+        *minor = krb5_set_default_realm(krbContext, realm);
+        if (*minor != 0)
+            return GSS_S_FAILURE;
+    } else {
+        flags |= KRB5_PRINCIPAL_PARSE_REQUIRE_REALM;
+    }
+
     if (nameBuffer == GSS_C_NO_BUFFER) {
         *minor = krb5_copy_principal(krbContext,
                                      krbAnonymousPrincipal(), &krbPrinc);
@@ -210,9 +220,7 @@ importUserName(OM_uint32 *minor,
         if (GSS_ERROR(major))
             return major;
 
-        *minor = krb5_parse_name_flags(krbContext, nameString,
-                                       KRB5_PRINCIPAL_PARSE_REQUIRE_REALM,
-                                       &krbPrinc);
+        *minor = krb5_parse_name_flags(krbContext, nameString, flags, &krbPrinc);
         if (*minor != 0) {
             GSSEAP_FREE(nameString);
             return GSS_S_FAILURE;