Am 28.08.26 um 20:50 schrieb [email protected]:
This is an automated email from the ASF dual-hosted git repository.

markt-asf pushed a commit to branch 1.3.x
in repository https://gitbox.apache.org/repos/asf/tomcat-native.git


The following commit(s) were added to refs/heads/1.3.x by this push:
      new 511335ff8 Harden against mis-use
511335ff8 is described below

commit 511335ff8fea8cb6d17e28623df51c92a1851fb8
Author: Mark Thomas <[email protected]>
AuthorDate: Fri Aug 28 18:49:45 2026 +0100

     Harden against mis-use
---
  native/src/bb.c                   | 13 ++++++++++++-
  xdocs/miscellaneous/changelog.xml |  4 ++++
  2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/native/src/bb.c b/native/src/bb.c
index 616ea78c7..d0292f0e3 100644
--- a/native/src/bb.c
+++ b/native/src/bb.c
@@ -118,8 +118,19 @@ TCN_IMPLEMENT_CALL(void, Buffer, free)(TCN_STDARGS, 
jobject bb)
TCN_IMPLEMENT_CALL(jlong, Buffer, address)(TCN_STDARGS, jobject bb)
  {
+    void *address;
+
      UNREFERENCED(o);
-    return P2J((*e)->GetDirectBufferAddress(e, bb));
+    address = (*e)->GetDirectBufferAddress(e, bb);
+    if (address == NULL) {
+        jclass npe = (*e)->FindClass(e, "java/lang/NullPointerException");
+        if (npe != NULL) {
+            (*e)->ThrowNew(e, npe, "ByteBuffer is null or not direct");
+            (*e)->DeleteLocalRef(e, npe);
+        }
+        return 0;
+    }
+    return P2J(address);
  }
...
I am testing tcnative 1.3.9 against latest released TC 9 and I am getting NullPointerExceptions due to this check. It seems, they do not occur with latest TC 9 head. Not sure, whether this breakage of released TC 9 versions with the forthcoming tcnative 1.3 release was intended? We should at least mention it in the announcement.

It seems I do not see this failure for tcnative 2.0.16, though that hardening change is there as well. In 2.0.16 I also see failures but not so many as for 1.3 (via this hardening there). I still need to sort out the 2.0.16 reasons.

Example from TestSsl:

Testcase: testSSLSessionTracking[OpenSSL] took 0.098 sec
        Caused an ERROR
Failed to initialize component [Connector["https-openssl-nio-127.0.0.1-auto-13"]] org.apache.catalina.LifecycleException: Failed to initialize component [Connector["https-openssl-nio-127.0.0.1-auto-13"]] at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:410)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:131)
at org.apache.catalina.core.StandardService.initInternal(StandardService.java:543)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:128)
at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:991)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:128)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:161)
        at org.apache.catalina.startup.Tomcat.start(Tomcat.java:454)
at org.apache.catalina.startup.TomcatBaseTest$TomcatWithFastSessionIDs.start(TomcatBaseTest.java:902) at org.apache.tomcat.util.net.TestSsl.testSSLSessionTracking(TestSsl.java:157) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.apache.tomcat.util.net.openssl.OpenSSLEngine at org.apache.tomcat.util.net.openssl.OpenSSLUtil.getImplementedProtocols(OpenSSLUtil.java:64)
        at org.apache.tomcat.util.net.SSLUtilBase.<init>(SSLUtilBase.java:121)
        at org.apache.tomcat.util.net.SSLUtilBase.<init>(SSLUtilBase.java:105)
at org.apache.tomcat.util.net.openssl.OpenSSLUtil.<init>(OpenSSLUtil.java:52) at org.apache.tomcat.util.net.openssl.OpenSSLImplementation.getSSLUtil(OpenSSLImplementation.java:54) at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:102) at org.apache.tomcat.util.net.AbstractJsseEndpoint.initialiseSsl(AbstractJsseEndpoint.java:78)
        at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:414)
at org.apache.tomcat.util.net.AbstractEndpoint.bindWithCleanup(AbstractEndpoint.java:1987) at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:2005)
        at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:992)
at org.apache.coyote.http11.AbstractHttp11Protocol.init(AbstractHttp11Protocol.java:93) at org.apache.catalina.connector.Connector.initInternal(Connector.java:1271)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:128)
Caused by: java.lang.ExceptionInInitializerError: Exception java.lang.NullPointerException: ByteBuffer is null or not direct [in thread "main"]
        at org.apache.tomcat.jni.Buffer.address(Native Method)
at org.apache.tomcat.util.net.openssl.OpenSSLEngine.<clinit>(OpenSSLEngine.java:138) at org.apache.tomcat.util.net.openssl.OpenSSLUtil.getImplementedProtocols(OpenSSLUtil.java:64)
        at org.apache.tomcat.util.net.SSLUtilBase.<init>(SSLUtilBase.java:121)
        at org.apache.tomcat.util.net.SSLUtilBase.<init>(SSLUtilBase.java:105)
at org.apache.tomcat.util.net.openssl.OpenSSLUtil.<init>(OpenSSLUtil.java:52) at org.apache.tomcat.util.net.openssl.OpenSSLImplementation.getSSLUtil(OpenSSLImplementation.java:54) at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:102) at org.apache.tomcat.util.net.AbstractJsseEndpoint.initialiseSsl(AbstractJsseEndpoint.java:78)
        at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:414)
at org.apache.tomcat.util.net.AbstractEndpoint.bindWithCleanup(AbstractEndpoint.java:1987) at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:2005)
        at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:992)
at org.apache.coyote.http11.AbstractHttp11Protocol.init(AbstractHttp11Protocol.java:93) at org.apache.catalina.connector.Connector.initInternal(Connector.java:1271)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:128)
at org.apache.catalina.core.StandardService.initInternal(StandardService.java:543)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:128)
at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:991)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:128)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:161)
        at org.apache.catalina.startup.Tomcat.start(Tomcat.java:454)
at org.apache.catalina.startup.TomcatBaseTest$TomcatWithFastSessionIDs.start(TomcatBaseTest.java:902)
        at org.apache.tomcat.util.net.TestSsl.testSimpleSsl(TestSsl.java:120)

Best regards,

Rainer



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to