From 120905e6429b992329847009b8de85598086af8f Mon Sep 17 00:00:00 2001 From: weijun Date: Mon, 20 Oct 2008 10:32:33 +0800 Subject: [PATCH] 6761072: new krb5 tests fail on multiple platforms Reviewed-by: xuelei --- .../sun/security/krb5/auto/BasicKrb5Test.java | 7 +++++-- test/sun/security/krb5/auto/KDC.java | 11 +++++++++-- test/sun/security/krb5/auto/OneKDC.java | 19 +++++++++++++++++-- 3 files changed, 31 insertions(+), 6 deletions(-) diff --git a/test/sun/security/krb5/auto/BasicKrb5Test.java b/test/sun/security/krb5/auto/BasicKrb5Test.java index 2099e27ff..26d52e078 100644 --- a/test/sun/security/krb5/auto/BasicKrb5Test.java +++ b/test/sun/security/krb5/auto/BasicKrb5Test.java @@ -49,14 +49,17 @@ public class BasicKrb5Test { if (args.length > 0) { etype = args[0]; } + + // Creates and starts the KDC. This line must be put ahead of etype check + // since the check needs a krb5.conf. + new OneKDC(etype).writeJAASConf(); + System.out.println("Testing etype " + etype); if (etype != null && !EType.isSupported(Config.getInstance().getType(etype))) { System.out.println("Not supported."); System.exit(0); } - // Creates and starts the KDC - new OneKDC(etype).writeJAASConf(); new BasicKrb5Test().go(OneKDC.SERVER, OneKDC.BACKEND); } diff --git a/test/sun/security/krb5/auto/KDC.java b/test/sun/security/krb5/auto/KDC.java index 03375950b..a875e090b 100644 --- a/test/sun/security/krb5/auto/KDC.java +++ b/test/sun/security/krb5/auto/KDC.java @@ -152,12 +152,19 @@ public class KDC { return; } } + String localhost = "localhost"; + try { + localhost = InetAddress.getByName(localhost) + .getCanonicalHostName(); + } catch (UnknownHostException uhe) { + ; // Ignore, localhost is still "localhost" + } KDC kdc = create("RABBIT.HOLE", 8888, false); kdc.addPrincipal("dummy", "bogus".toCharArray()); kdc.addPrincipal("foo", "bar".toCharArray()); kdc.addPrincipalRandKey("krbtgt/" + kdc.realm); - kdc.addPrincipalRandKey("server/localhost"); - kdc.addPrincipalRandKey("backend/localhost"); + kdc.addPrincipalRandKey("server/" + localhost); + kdc.addPrincipalRandKey("backend/" + localhost); } /** diff --git a/test/sun/security/krb5/auto/OneKDC.java b/test/sun/security/krb5/auto/OneKDC.java index 22e8a4ec1..9505c6a3c 100644 --- a/test/sun/security/krb5/auto/OneKDC.java +++ b/test/sun/security/krb5/auto/OneKDC.java @@ -24,6 +24,8 @@ import java.io.File; import java.io.FileOutputStream; import java.io.IOException; +import java.net.InetAddress; +import java.net.UnknownHostException; import java.security.Security; import javax.security.auth.callback.Callback; import javax.security.auth.callback.CallbackHandler; @@ -44,10 +46,23 @@ import sun.security.krb5.Config; */ public class OneKDC extends KDC { + // The krb5 codes would try to canonicalize hostnames before creating + // a service principal name, so let's find out the canonicalized form + // of localhost first. The following codes mimic the process inside + // PrincipalName.java. + static String localhost = "localhost"; + static { + try { + localhost = InetAddress.getByName(localhost) + .getCanonicalHostName(); + } catch (UnknownHostException uhe) { + ; // Ignore, localhost is still "localhost" + } + } public static final String USER = "dummy"; public static final char[] PASS = "bogus".toCharArray(); - public static final String SERVER = "server/localhost"; - public static final String BACKEND = "backend/localhost"; + public static String SERVER = "server/" + localhost; + public static String BACKEND = "backend/" + localhost; public static final String KRB5_CONF = "localkdc-krb5.conf"; public static final String KTAB = "localkdc.ktab"; public static final String JAAS_CONF = "localkdc-jaas.conf"; -- GitLab