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

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


The following commit(s) were added to refs/heads/main by this push:
     new dec2a7d6e6 Avoid possible NPEs
dec2a7d6e6 is described below

commit dec2a7d6e64f6c732e70cd3113f01e374f1c7544
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 b66d5c7725..421150f785 100644
--- a/java/org/apache/catalina/connector/Request.java
+++ b/java/org/apache/catalina/connector/Request.java
@@ -1388,6 +1388,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 59e85615c9..2699564d43 100644
--- a/java/org/apache/catalina/connector/Response.java
+++ b/java/org/apache/catalina/connector/Response.java
@@ -788,6 +788,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);
@@ -831,6 +834,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);
@@ -1034,6 +1040,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 cb89d02a85..fe607b3dd1 100644
--- a/java/org/apache/catalina/connector/ResponseFacade.java
+++ b/java/org/apache/catalina/connector/ResponseFacade.java
@@ -258,6 +258,7 @@ public class ResponseFacade implements HttpServletResponse {
 
     @Override
     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 4ee987057f..da57146c13 100644
--- a/java/org/apache/catalina/core/StandardContext.java
+++ b/java/org/apache/catalina/core/StandardContext.java
@@ -4963,7 +4963,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