This is an automated email from the ASF dual-hosted git repository.
rmaucher pushed a commit to branch 9.0.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/9.0.x by this push:
new 3b55038e8b Fixes from code review
3b55038e8b is described below
commit 3b55038e8b13fa6da7972322de77b82259ce2b91
Author: remm <[email protected]>
AuthorDate: Tue Jun 2 17:02:09 2026 +0200
Fixes from code review
stripSession was mistakenly removed (it is used by Import in generated
code). Not having access to the system property means some hardcoding
(for now). There are evidently no users of this, so this can be seen as
example code for tag plugins (a not well known feature of Jasper).
---
.../apache/tomcat/util/scan/AbstractInputStreamJar.java | 8 +++++++-
java/org/apache/tomcat/util/scan/StandardJarScanner.java | 5 ++++-
.../apache/tomcat/util/threads/InlineExecutorService.java | 15 +++++++++------
java/org/apache/tomcat/util/threads/LimitLatch.java | 6 ++++++
.../apache/tomcat/util/threads/LocalStrings.properties | 1 +
java/org/apache/tomcat/websocket/DigestAuthenticator.java | 2 +-
.../apache/tomcat/websocket/WsRemoteEndpointImplBase.java | 4 ++--
7 files changed, 30 insertions(+), 11 deletions(-)
diff --git a/java/org/apache/tomcat/util/scan/AbstractInputStreamJar.java
b/java/org/apache/tomcat/util/scan/AbstractInputStreamJar.java
index fef9d80adc..2f09d62793 100644
--- a/java/org/apache/tomcat/util/scan/AbstractInputStreamJar.java
+++ b/java/org/apache/tomcat/util/scan/AbstractInputStreamJar.java
@@ -259,7 +259,13 @@ public abstract class AbstractInputStreamJar implements
Jar {
int i = name.indexOf('/', 18);
if (i > 0) {
String baseName = name.substring(i + 1);
- int version = Integer.parseInt(name.substring(18, i));
+ int version = 0;
+ try {
+ version = Integer.parseInt(name.substring(18, i));
+ } catch (NumberFormatException e) {
+ jarEntry = jarInputStream.getNextJarEntry();
+ continue;
+ }
// Ignore any entries targeting for a later version than
// the target for this runtime
diff --git a/java/org/apache/tomcat/util/scan/StandardJarScanner.java
b/java/org/apache/tomcat/util/scan/StandardJarScanner.java
index c26eaa373b..6b71e44c37 100644
--- a/java/org/apache/tomcat/util/scan/StandardJarScanner.java
+++ b/java/org/apache/tomcat/util/scan/StandardJarScanner.java
@@ -378,6 +378,9 @@ public class StandardJarScanner implements JarScanner {
// Skip this URL it has already been processed
continue;
}
+ if (url.getPath() == null) {
+ continue;
+ }
ClassPathEntry cpe = new ClassPathEntry(url);
@@ -463,7 +466,7 @@ public class StandardJarScanner implements JarScanner {
log.trace(sm.getString("jarScan.jarUrlStart", url));
}
- if ("jar".equals(url.getProtocol()) ||
url.getPath().endsWith(Constants.JAR_EXT)) {
+ if ("jar".equals(url.getProtocol()) || (url.getPath() != null &&
url.getPath().endsWith(Constants.JAR_EXT))) {
try (Jar jar = JarFactory.newInstance(url)) {
if (isScanManifest()) {
processManifest(jar, isWebapp, classPathUrlsToProcess);
diff --git a/java/org/apache/tomcat/util/threads/InlineExecutorService.java
b/java/org/apache/tomcat/util/threads/InlineExecutorService.java
index d9778c9e4d..1086aa59b7 100644
--- a/java/org/apache/tomcat/util/threads/InlineExecutorService.java
+++ b/java/org/apache/tomcat/util/threads/InlineExecutorService.java
@@ -89,12 +89,15 @@ public class InlineExecutorService extends
AbstractExecutorService {
}
taskRunning = true;
}
- command.run();
- synchronized (lock) {
- taskRunning = false;
- if (shutdown) {
- terminated = true;
- lock.notifyAll();
+ try {
+ command.run();
+ } finally {
+ synchronized (lock) {
+ taskRunning = false;
+ if (shutdown) {
+ terminated = true;
+ lock.notifyAll();
+ }
}
}
}
diff --git a/java/org/apache/tomcat/util/threads/LimitLatch.java
b/java/org/apache/tomcat/util/threads/LimitLatch.java
index 3640ec1ef2..0a3b6b1bce 100644
--- a/java/org/apache/tomcat/util/threads/LimitLatch.java
+++ b/java/org/apache/tomcat/util/threads/LimitLatch.java
@@ -72,6 +72,9 @@ public class LimitLatch {
* @param limit - maximum number of concurrent acquisitions of this latch
*/
public LimitLatch(long limit) {
+ if (limit < 0) {
+ throw new
IllegalArgumentException(sm.getString("limitLatch.badLimit",
String.valueOf(limit)));
+ }
this.limit = limit;
this.count = new AtomicLong(0);
this.sync = new Sync();
@@ -106,6 +109,9 @@ public class LimitLatch {
* @param limit The new limit
*/
public void setLimit(long limit) {
+ if (limit < 0) {
+ throw new
IllegalArgumentException(sm.getString("limitLatch.badLimit",
String.valueOf(limit)));
+ }
this.limit = limit;
}
diff --git a/java/org/apache/tomcat/util/threads/LocalStrings.properties
b/java/org/apache/tomcat/util/threads/LocalStrings.properties
index 58c40749f2..38a12a075e 100644
--- a/java/org/apache/tomcat/util/threads/LocalStrings.properties
+++ b/java/org/apache/tomcat/util/threads/LocalStrings.properties
@@ -16,6 +16,7 @@
# Do not edit this file directly.
# To edit translations see:
https://tomcat.apache.org/getinvolved.html#Translations
+limitLatch.badLimit=Invalid limit value [{0}]
limitLatch.exceeded=Latch limit [{0}] exceeded
taskQueue.notRunning=Executor not running, can't force a command into the queue
diff --git a/java/org/apache/tomcat/websocket/DigestAuthenticator.java
b/java/org/apache/tomcat/websocket/DigestAuthenticator.java
index 0e0e4b482e..957222a46c 100644
--- a/java/org/apache/tomcat/websocket/DigestAuthenticator.java
+++ b/java/org/apache/tomcat/websocket/DigestAuthenticator.java
@@ -68,7 +68,7 @@ public class DigestAuthenticator extends Authenticator {
StringBuilder challenge = new StringBuilder();
- if (!messageQop.isEmpty()) {
+ if (messageQop != null && !messageQop.isEmpty()) {
if (cnonceGenerator == null) {
synchronized (cnonceGeneratorLock) {
if (cnonceGenerator == null) {
diff --git a/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java
b/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java
index 183c12b34e..3866b9c9c5 100644
--- a/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java
+++ b/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java
@@ -843,9 +843,9 @@ public abstract class WsRemoteEndpointImplBase implements
RemoteEndpoint {
entry.getEncoder().destroy();
if (instanceManager != null) {
try {
- instanceManager.destroyInstance(entry);
+ instanceManager.destroyInstance(entry.encoder());
} catch (IllegalAccessException | InvocationTargetException e)
{
-
log.warn(sm.getString("wsRemoteEndpoint.encoderDestroyFailed",
encoder.getClass()), e);
+
log.warn(sm.getString("wsRemoteEndpoint.encoderDestroyFailed", entry.clazz()),
e);
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]