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]