This is an automated email from the ASF dual-hosted git repository.

rmaucher pushed a commit to branch 10.1.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/10.1.x by this push:
     new 715310a2fc Avoid possible NPEs
715310a2fc is described below

commit 715310a2fcd3729d8d85efed4747f50c692308e9
Author: remm <[email protected]>
AuthorDate: Wed May 20 21:53:32 2026 +0200

    Avoid possible NPEs
    
    Fix a cut and paste issue.
    Use clone on some arrays which were missing it.
---
 java/org/apache/catalina/connector/Request.java        | 3 +++
 java/org/apache/catalina/connector/Response.java       | 9 +++++++++
 java/org/apache/catalina/connector/ResponseFacade.java | 1 +
 java/org/apache/catalina/core/StandardContext.java     | 2 +-
 java/org/apache/catalina/core/StandardHost.java        | 4 ++--
 java/org/apache/catalina/core/StandardHostValve.java   | 3 ++-
 6 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/java/org/apache/catalina/connector/Request.java 
b/java/org/apache/catalina/connector/Request.java
index 2d679b2b0c..e04c8612bb 100644
--- a/java/org/apache/catalina/connector/Request.java
+++ b/java/org/apache/catalina/connector/Request.java
@@ -1434,6 +1434,9 @@ public class Request implements HttpServletRequest {
 
     @Override
     public void removeAttribute(String name) {
+        if (name == null) {
+            throw new 
IllegalArgumentException(sm.getString("coyoteRequest.setAttribute.namenull"));
+        }
         // Remove the specified attribute
         // Pass special attributes to the native layer
         if (name.startsWith("org.apache.tomcat.")) {
diff --git a/java/org/apache/catalina/connector/Response.java 
b/java/org/apache/catalina/connector/Response.java
index 545f5d6900..bb2bca5571 100644
--- a/java/org/apache/catalina/connector/Response.java
+++ b/java/org/apache/catalina/connector/Response.java
@@ -794,6 +794,9 @@ public class Response implements HttpServletResponse {
 
     @Override
     public String getHeader(String name) {
+        if (name == null || name.isEmpty()) {
+            return null;
+        }
         // Need special handling for Content-Type and Content-Length due to
         // special handling of these in coyoteResponse
         char cc = name.charAt(0);
@@ -837,6 +840,9 @@ public class Response implements HttpServletResponse {
 
     @Override
     public Collection<String> getHeaders(String name) {
+        if (name == null || name.isEmpty()) {
+            return Set.of();
+        }
         // Need special handling for Content-Type and Content-Length due to
         // special handling of these in coyoteResponse
         char cc = name.charAt(0);
@@ -1047,6 +1053,9 @@ public class Response implements HttpServletResponse {
 
     @Override
     public boolean containsHeader(String name) {
+        if (name == null || name.isEmpty()) {
+            return false;
+        }
         // Need special handling for Content-Type and Content-Length due to
         // special handling of these in coyoteResponse
         char cc = name.charAt(0);
diff --git a/java/org/apache/catalina/connector/ResponseFacade.java 
b/java/org/apache/catalina/connector/ResponseFacade.java
index 738701f1d9..a1e6edfab4 100644
--- a/java/org/apache/catalina/connector/ResponseFacade.java
+++ b/java/org/apache/catalina/connector/ResponseFacade.java
@@ -336,6 +336,7 @@ public class ResponseFacade implements HttpServletResponse {
 
 
     public void sendEarlyHints() {
+        checkFacade();
         response.sendEarlyHints();
     }
 
diff --git a/java/org/apache/catalina/core/StandardContext.java 
b/java/org/apache/catalina/core/StandardContext.java
index a8b4bbc793..eee74e6215 100644
--- a/java/org/apache/catalina/core/StandardContext.java
+++ b/java/org/apache/catalina/core/StandardContext.java
@@ -4997,7 +4997,7 @@ public class StandardContext extends ContainerBase 
implements Context, Notificat
             try {
                 instanceManager.backgroundProcess();
             } catch (Exception e) {
-                
log.warn(sm.getString("standardContext.backgroundProcess.instanceManager", 
resources), e);
+                
log.warn(sm.getString("standardContext.backgroundProcess.instanceManager", 
instanceManager), e);
             }
         }
         super.backgroundProcess();
diff --git a/java/org/apache/catalina/core/StandardHost.java 
b/java/org/apache/catalina/core/StandardHost.java
index 29e4bbb04c..1449b58cb8 100644
--- a/java/org/apache/catalina/core/StandardHost.java
+++ b/java/org/apache/catalina/core/StandardHost.java
@@ -727,7 +727,7 @@ public class StandardHost extends ContainerBase implements 
Host {
     @Override
     public String[] findAliases() {
         synchronized (aliasesLock) {
-            return this.aliases;
+            return this.aliases.clone();
         }
     }
 
@@ -828,7 +828,7 @@ public class StandardHost extends ContainerBase implements 
Host {
      */
     public String[] getAliases() {
         synchronized (aliasesLock) {
-            return aliases;
+            return aliases.clone();
         }
     }
 
diff --git a/java/org/apache/catalina/core/StandardHostValve.java 
b/java/org/apache/catalina/core/StandardHostValve.java
index 40fea3abc1..2da40a4750 100644
--- a/java/org/apache/catalina/core/StandardHostValve.java
+++ b/java/org/apache/catalina/core/StandardHostValve.java
@@ -244,7 +244,8 @@ final class StandardHostValve extends ValveBase {
         // If this is an aborted request from a client just log it and return
         if (realError instanceof ClientAbortException) {
             if (log.isDebugEnabled()) {
-                log.debug(sm.getString("standardHost.clientAbort", 
realError.getCause().getMessage()));
+                log.debug(sm.getString("standardHost.clientAbort",
+                        realError.getCause() == null ? realError.getMessage() 
: realError.getCause().getMessage()));
             }
             return;
         }


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

Reply via email to