From 90f8dd13465dc686b179230e92f071fb6b11e709 Mon Sep 17 00:00:00 2001 From: markt Date: Mon, 23 Nov 2009 00:11:11 +0000 Subject: [PATCH] Fix failing SSL test Prevent NPE in NIO connector when using SSL and the default keystore password git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@883196 13f79535-47bb-0310-9956-ffa450edef68 --- java/org/apache/tomcat/util/net/AbstractEndpoint.java | 3 ++- java/org/apache/tomcat/util/net/NioEndpoint.java | 7 ++++++- java/org/apache/tomcat/util/net/jsse/JSSESocketFactory.java | 6 +++--- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/java/org/apache/tomcat/util/net/AbstractEndpoint.java b/java/org/apache/tomcat/util/net/AbstractEndpoint.java index 89e084346..7796e71ee 100644 --- a/java/org/apache/tomcat/util/net/AbstractEndpoint.java +++ b/java/org/apache/tomcat/util/net/AbstractEndpoint.java @@ -26,6 +26,7 @@ import java.util.concurrent.TimeUnit; import org.apache.juli.logging.Log; import org.apache.juli.logging.LogFactory; import org.apache.tomcat.util.IntrospectionUtils; +import org.apache.tomcat.util.net.jsse.JSSESocketFactory; import org.apache.tomcat.util.res.StringManager; import org.apache.tomcat.util.threads.ResizableExecutor; import org.apache.tomcat.util.threads.TaskQueue; @@ -503,7 +504,7 @@ public abstract class AbstractEndpoint { public String getKeyAlias() { return keyAlias;} public void setKeyAlias(String s ) { keyAlias = s;} - private String keyPass = "changeit"; + private String keyPass = JSSESocketFactory.DEFAULT_KEY_PASS; public String getKeyPass() { return keyPass;} public void setKeyPass(String s ) { this.keyPass = s;} diff --git a/java/org/apache/tomcat/util/net/NioEndpoint.java b/java/org/apache/tomcat/util/net/NioEndpoint.java index 99885fde3..808808f9b 100644 --- a/java/org/apache/tomcat/util/net/NioEndpoint.java +++ b/java/org/apache/tomcat/util/net/NioEndpoint.java @@ -53,6 +53,7 @@ import org.apache.juli.logging.Log; import org.apache.juli.logging.LogFactory; import org.apache.tomcat.util.IntrospectionUtils; import org.apache.tomcat.util.net.SecureNioChannel.ApplicationBufferHandler; +import org.apache.tomcat.util.net.jsse.JSSESocketFactory; import org.apache.tomcat.util.net.jsse.NioX509KeyManager; /** @@ -504,7 +505,11 @@ public class NioEndpoint extends AbstractEndpoint { // Initialize SSL if needed if (isSSLEnabled()) { // Initialize SSL - char[] passphrase = getKeystorePass().toCharArray(); + String keystorePass = getKeystorePass(); + if (keystorePass == null) { + keystorePass = JSSESocketFactory.DEFAULT_KEY_PASS; + } + char[] passphrase = keystorePass.toCharArray(); char[] tpassphrase = (getTruststorePass()!=null)?getTruststorePass().toCharArray():passphrase; String ttype = (getTruststoreType()!=null)?getTruststoreType():getKeystoreType(); diff --git a/java/org/apache/tomcat/util/net/jsse/JSSESocketFactory.java b/java/org/apache/tomcat/util/net/jsse/JSSESocketFactory.java index 7d1bdddf4..a6d54e8dd 100644 --- a/java/org/apache/tomcat/util/net/jsse/JSSESocketFactory.java +++ b/java/org/apache/tomcat/util/net/jsse/JSSESocketFactory.java @@ -84,15 +84,15 @@ public class JSSESocketFactory private static final StringManager sm = StringManager.getManager("org.apache.tomcat.util.net.jsse.res"); - // defaults + // Defaults - made public where re-used static String defaultProtocol = "TLS"; static boolean defaultClientAuth = false; static String defaultKeystoreType = "JKS"; private static final String defaultKeystoreFile = System.getProperty("user.home") + "/.keystore"; - private static final String defaultKeyPass = "changeit"; private static final int defaultSessionCacheSize = 0; private static final int defaultSessionTimeout = 86400; + public static final String DEFAULT_KEY_PASS = "changeit"; static final org.apache.juli.logging.Log log = org.apache.juli.logging.LogFactory.getLog(JSSESocketFactory.class); @@ -259,7 +259,7 @@ public class JSSESocketFactory String keyPass = (String)attributes.get( AbstractEndpoint.SSL_ATTR_KEY_PASS); if (keyPass == null) { - keyPass = defaultKeyPass; + keyPass = DEFAULT_KEY_PASS; } String keystorePass = (String)attributes.get( AbstractEndpoint.SSL_ATTR_KEYSTORE_PASS); -- 2.11.0