Done… Received:
We will review your report and have assigned it an internal review ID : 9057381 I used Java8 as Java version but mentioned that it also happens on 11. Hope it helps, Norman > On 24. Sep 2018, at 19:19, Xuelei Fan <[email protected]> wrote: > > Hi Norman, > > It looks like a bug to me. Would you please file a new bug? > > Thanks, > Xuelei > > On 9/22/2018 3:40 PM, Norman Maurer wrote: >> Hi all, >> I think I found another bug in the the SSL implementation (well really in >> the TrustManager related part) which leads to a NPE. I was able to reproduce >> this on Java8 and Java11 (ea28) but I am sure it also exists on 9 and 10. >> While trying to write some test code for netty I did something stupid while >> creating the SSLEngine by passing a hostname as parameter for the server >> which then ended up in an NPE during handshake. I would argue we should not >> fail with a NPE. >> Basically something like: >> SSLEngine serverEngine = serverCtx.createSSLEngine("localhost", -1); >> I think this is caused by >> sun.security.ssl.X509TrustManagerImpl.checkIdentity(…) missing a null check >> for the hostname before calling sun.security.util.HostnameChecker.match(…) >> A full reproduce (which I extracted from my netty testcase) can be found >> here (there is a README.md which explains how to run it): >> https://github.com/normanmaurer/jdk_ssl_npe_reproducer >> The stack I see is: >> |Exception in thread "main" java.lang.RuntimeException: Delegated task threw >> Exception/Error at >> sun.security.ssl.Handshaker.checkThrown(Handshaker.java:1527) at >> sun.security.ssl.SSLEngineImpl.checkTaskThrown(SSLEngineImpl.java:535) at >> sun.security.ssl.SSLEngineImpl.writeAppRecord(SSLEngineImpl.java:1214) at >> sun.security.ssl.SSLEngineImpl.wrap(SSLEngineImpl.java:1186) at >> javax.net.ssl.SSLEngine.wrap(SSLEngine.java:469) at >> JDKSslReproducer.handshake(JDKSslReproducer.java:76) at >> JDKSslReproducer.main(JDKSslReproducer.java:51) Caused by: >> java.lang.NullPointerException at >> sun.net.util.IPAddressUtil.textToNumericFormatV4(IPAddressUtil.java:49) at >> sun.net.util.IPAddressUtil.isIPv4LiteralAddress(IPAddressUtil.java:241) at >> sun.security.util.HostnameChecker.isIpAddress(HostnameChecker.java:125) at >> sun.security.util.HostnameChecker.match(HostnameChecker.java:93) at >> sun.security.ssl.X509TrustManagerImpl.checkIdentity(X509TrustManagerImpl.java:455) >> at >> sun.security.ssl.AbstractTrustManagerWrapper.checkAdditionalTrust(SSLContextImpl.java:1068) >> at >> sun.security.ssl.AbstractTrustManagerWrapper.checkServerTrusted(SSLContextImpl.java:1007) >> at >> sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1601) >> at >> sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216) >> at sun.security.ssl.Handshaker.processLoop(Handshaker.java:1052) at >> sun.security.ssl.Handshaker$1.run(Handshaker.java:992) at >> sun.security.ssl.Handshaker$1.run(Handshaker.java:989) at >> java.security.AccessController.doPrivileged(Native Method) at >> sun.security.ssl.Handshaker$DelegatedTask.run(Handshaker.java:1467) at >> JDKSslReproducer.runDelegatedTasks(JDKSslReproducer.java:131) at >> JDKSslReproducer.handshake(JDKSslReproducer.java:99) ... 1 more| >> This only happens if a X509Trustmanager is used (not the Extended version) >> and when setEndpointIdentificationAlgorithm(…) is used on the client-side. >> Please let me know if you agree this is a bug and I am happy to open a bug >> for it. >> Thanks >> Norman
