Author: remm Date: Thu Mar 15 13:25:39 2018 New Revision: 1826812 URL: http://svn.apache.org/viewvc?rev=1826812&view=rev Log: While trying for 62177, noticed that JSSE didn't complain while OpenSSL was throwing ISEs. Ignore SSL session access instead of throwing an ISE.
Modified: tomcat/trunk/java/org/apache/tomcat/util/net/openssl/OpenSSLEngine.java tomcat/trunk/webapps/docs/changelog.xml Modified: tomcat/trunk/java/org/apache/tomcat/util/net/openssl/OpenSSLEngine.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/openssl/OpenSSLEngine.java?rev=1826812&r1=1826811&r2=1826812&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/net/openssl/OpenSSLEngine.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/openssl/OpenSSLEngine.java Thu Mar 15 13:25:39 2018 @@ -1078,12 +1078,11 @@ public final class OpenSSLEngine extends @Override public byte[] getId() { - byte[] id; + byte[] id = null; synchronized (OpenSSLEngine.this) { - if (destroyed) { - throw new IllegalStateException(sm.getString("engine.noSession")); + if (!destroyed) { + id = SSL.getSessionId(ssl); } - id = SSL.getSessionId(ssl); } return id; @@ -1099,10 +1098,9 @@ public final class OpenSSLEngine extends // We need to multiply by 1000 as OpenSSL uses seconds and we need milliseconds. long creationTime = 0; synchronized (OpenSSLEngine.this) { - if (destroyed) { - throw new IllegalStateException(sm.getString("engine.noSession")); + if (!destroyed) { + creationTime = SSL.getTime(ssl); } - creationTime = SSL.getTime(ssl); } return creationTime * 1000L; } @@ -1316,10 +1314,9 @@ public final class OpenSSLEngine extends String applicationProtocol = OpenSSLEngine.this.applicationProtocol; if (applicationProtocol == null) { synchronized (OpenSSLEngine.this) { - if (destroyed) { - throw new IllegalStateException(sm.getString("engine.noSession")); + if (!destroyed) { + applicationProtocol = SSL.getNextProtoNegotiated(ssl); } - applicationProtocol = SSL.getNextProtoNegotiated(ssl); } if (applicationProtocol == null) { applicationProtocol = fallbackApplicationProtocol; @@ -1330,12 +1327,11 @@ public final class OpenSSLEngine extends OpenSSLEngine.this.applicationProtocol = applicationProtocol = ""; } } - String version; + String version = null; synchronized (OpenSSLEngine.this) { - if (destroyed) { - throw new IllegalStateException(sm.getString("engine.noSession")); + if (!destroyed) { + version = SSL.getVersion(ssl); } - version = SSL.getVersion(ssl); } if (applicationProtocol.isEmpty()) { return version; Modified: tomcat/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1826812&r1=1826811&r2=1826812&view=diff ============================================================================== --- tomcat/trunk/webapps/docs/changelog.xml (original) +++ tomcat/trunk/webapps/docs/changelog.xml Thu Mar 15 13:25:39 2018 @@ -82,6 +82,9 @@ <fix> Improve debug logging for HTTP/2 pushed streams. (markt) </fix> + <fix> + The OpenSSL engine SSL session will now ignore invalid accesses. (remm) + </fix> </changelog> </subsection> <subsection name="jdbc-pool"> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org