--- 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 {