6552334: Enable DNS in Kerberos by default
authorweijun
Tue, 03 Feb 2009 09:38:13 +0800
changeset 1946 2e6e15ca4d56
parent 1945 95b9d549a3b4
child 1947 316d79a73e74
6552334: Enable DNS in Kerberos by default Reviewed-by: valeriep
jdk/src/share/classes/sun/security/krb5/Config.java
jdk/src/share/classes/sun/security/krb5/KrbServiceLocator.java
jdk/test/sun/security/krb5/DnsFallback.java
--- a/jdk/src/share/classes/sun/security/krb5/Config.java	Mon Feb 02 16:50:54 2009 +0100
+++ b/jdk/src/share/classes/sun/security/krb5/Config.java	Tue Feb 03 09:38:13 2009 +0800
@@ -39,7 +39,6 @@
 import java.io.InputStreamReader;
 import java.io.IOException;
 import java.util.Enumeration;
-import java.util.List;
 import java.util.StringTokenizer;
 import java.net.InetAddress;
 import java.net.UnknownHostException;
@@ -156,11 +155,7 @@
                 configFile = loadConfigFile();
                 stanzaTable = parseStanzaTable(configFile);
             } catch (IOException ioe) {
-                KrbException ke = new KrbException("Could not load " +
-                                                   "configuration file " +
-                                                   ioe.getMessage());
-                ke.initCause(ioe);
-                throw(ke);
+                // No krb5.conf, no problem. We'll use DNS etc.
             }
         }
     }
@@ -1057,7 +1052,12 @@
     public boolean useDNS(String name) {
         String value = getDefault(name, "libdefaults");
         if (value == null) {
-            return getDefaultBooleanValue("dns_fallback", "libdefaults");
+            value = getDefault("dns_fallback", "libdefaults");
+            if ("false".equalsIgnoreCase(value)) {
+                return false;
+            } else {
+                return true;
+            }
         } else {
             return value.equalsIgnoreCase("true");
         }
@@ -1117,7 +1117,7 @@
         String realm = null;
         String hostName = null;
         try {
-            hostName = InetAddress.getLocalHost().getHostName();
+            hostName = InetAddress.getLocalHost().getCanonicalHostName();
         } catch (UnknownHostException e) {
             KrbException ke = new KrbException(Krb5.KRB_ERR_GENERIC,
                 "Unable to locate Kerberos realm: " + e.getMessage());
--- a/jdk/src/share/classes/sun/security/krb5/KrbServiceLocator.java	Mon Feb 02 16:50:54 2009 +0100
+++ b/jdk/src/share/classes/sun/security/krb5/KrbServiceLocator.java	Tue Feb 03 09:38:13 2009 +0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2006-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -133,7 +133,7 @@
      */
     static String[] getKerberosService(String realmName, String protocol) {
 
-        String dnsUrl = "dns:///_kerberos." + protocol + realmName;
+        String dnsUrl = "dns:///_kerberos." + protocol + "." + realmName;
         String[] hostports = null;
 
         try {
--- a/jdk/test/sun/security/krb5/DnsFallback.java	Mon Feb 02 16:50:54 2009 +0100
+++ b/jdk/test/sun/security/krb5/DnsFallback.java	Tue Feb 03 09:38:13 2009 +0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2008-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,7 +23,8 @@
 /*
  * @test
  * @bug 6673164
- * @summary dns_fallback parse error
+ * @bug 6552334
+ * @summary fix dns_fallback parse error, and use dns by default
  */
 
 import sun.security.krb5.*;
@@ -31,6 +32,8 @@
 
 public class DnsFallback {
     public static void main(String[] args) throws Exception {
+
+        // for 6673164
         check("true", "true", true);
         check("false", "true", false);
         check("true", "false", true);
@@ -39,6 +42,9 @@
         check("false", null, false);
         check(null, "true", true);
         check(null, "false", false);
+
+        // for 6552334
+        check(null, null, true);
     }
 
     static void check(String realm, String fallback, boolean output) throws Exception {