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

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


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

commit bee31ec95fc73107552b65652d7d3a642697e1aa
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 ff1b6798d3..d4587bed73 100644
--- a/java/org/apache/catalina/connector/Request.java
+++ b/java/org/apache/catalina/connector/Request.java
@@ -1392,6 +1392,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 71f033df05..30647ca6bb 100644
--- a/java/org/apache/catalina/connector/Response.java
+++ b/java/org/apache/catalina/connector/Response.java
@@ -790,6 +790,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);
@@ -833,6 +836,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);
@@ -1036,6 +1042,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 12f6a011f2..479fa0457b 100644
--- a/java/org/apache/catalina/connector/ResponseFacade.java
+++ b/java/org/apache/catalina/connector/ResponseFacade.java
@@ -257,6 +257,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 753bbe2168..5c6afda3d5 100644
--- a/java/org/apache/catalina/core/StandardContext.java
+++ b/java/org/apache/catalina/core/StandardContext.java
@@ -4961,7 +4961,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 02a162debf..daaca98633 100644
--- a/java/org/apache/catalina/core/StandardHost.java
+++ b/java/org/apache/catalina/core/StandardHost.java
@@ -724,7 +724,7 @@ public class StandardHost extends ContainerBase implements 
Host {
     @Override
     public String[] findAliases() {
         synchronized (aliasesLock) {
-            return this.aliases;
+            return this.aliases.clone();
         }
     }
 
@@ -825,7 +825,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 0098332752..f837c1363e 100644
--- a/java/org/apache/catalina/core/StandardHostValve.java
+++ b/java/org/apache/catalina/core/StandardHostValve.java
@@ -243,7 +243,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