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

markt-asf 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 9db455591d web.xml logged output should also use decoded URL patterns
9db455591d is described below

commit 9db455591d16145f085c55de190605c3ad177e52
Author: Mark Thomas <[email protected]>
AuthorDate: Wed Aug 19 07:59:13 2026 +0100

    web.xml logged output should also use decoded URL patterns
---
 .../apache/tomcat/util/descriptor/web/WebXml.java  | 39 +++++-----------------
 1 file changed, 8 insertions(+), 31 deletions(-)

diff --git a/java/org/apache/tomcat/util/descriptor/web/WebXml.java 
b/java/org/apache/tomcat/util/descriptor/web/WebXml.java
index 75007b98d6..95b3cb5215 100644
--- a/java/org/apache/tomcat/util/descriptor/web/WebXml.java
+++ b/java/org/apache/tomcat/util/descriptor/web/WebXml.java
@@ -16,7 +16,6 @@
  */
 package org.apache.tomcat.util.descriptor.web;
 
-import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.net.URL;
 import java.util.ArrayList;
@@ -44,8 +43,6 @@ import jakarta.servlet.descriptor.TaglibDescriptor;
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
 import org.apache.tomcat.util.buf.B2CConverter;
-import org.apache.tomcat.util.buf.UEncoder;
-import org.apache.tomcat.util.buf.UEncoder.SafeCharsSet;
 import org.apache.tomcat.util.descriptor.XmlIdentifiers;
 import org.apache.tomcat.util.res.StringManager;
 import org.apache.tomcat.util.security.Escape;
@@ -73,8 +70,6 @@ public class WebXml {
 
     private final Log log = LogFactory.getLog(WebXml.class); // must not be 
static
 
-    private final UEncoder urlEncoder = new UEncoder(SafeCharsSet.WITH_SLASH);
-
 
     /**
      * Global defaults are overridable but Servlets and Servlet mappings need 
to be unique. Duplicates normally trigger
@@ -1485,7 +1480,7 @@ public class WebXml {
                     sb.append("    <url-pattern>*</url-pattern>\n");
                 } else {
                     for (String urlPattern : filterMap.getURLPatterns()) {
-                        appendElement(sb, INDENT4, "url-pattern", 
encodeUrl(urlPattern));
+                        appendElement(sb, INDENT4, "url-pattern", urlPattern);
                     }
                 }
                 // dispatcher was added in Servlet 2.4
@@ -1571,7 +1566,7 @@ public class WebXml {
         for (Map.Entry<String,String> entry : servletMappings.entrySet()) {
             sb.append("  <servlet-mapping>\n");
             appendElement(sb, INDENT4, "servlet-name", entry.getValue());
-            appendElement(sb, INDENT4, "url-pattern", 
encodeUrl(entry.getKey()));
+            appendElement(sb, INDENT4, "url-pattern", entry.getKey());
             sb.append("  </servlet-mapping>\n");
         }
         if (!servletMappings.isEmpty()) {
@@ -1651,7 +1646,7 @@ public class WebXml {
             } else if (errorPage.getErrorCode() > 0) {
                 appendElement(sb, INDENT4, "error-code", 
Integer.toString(errorCode));
             }
-            appendElement(sb, INDENT4, "location", errorPage.getLocation(), 
true);
+            appendElement(sb, INDENT4, "location", errorPage.getLocation());
             sb.append("  </error-page>\n");
         }
         if (!errorPages.isEmpty()) {
@@ -1674,7 +1669,7 @@ public class WebXml {
                 for (JspPropertyGroup jpg : jspPropertyGroups) {
                     sb.append("    <jsp-property-group>\n");
                     for (String urlPattern : jpg.getUrlPatterns()) {
-                        appendElement(sb, INDENT6, "url-pattern", 
encodeUrl(urlPattern));
+                        appendElement(sb, INDENT6, "url-pattern", urlPattern);
                     }
                     appendElement(sb, INDENT6, "el-ignored", 
jpg.getElIgnored());
                     appendElement(sb, INDENT6, "page-encoding", 
jpg.getPageEncoding());
@@ -1754,7 +1749,7 @@ public class WebXml {
                 appendElement(sb, INDENT6, "web-resource-name", 
collection.getName());
                 appendElement(sb, INDENT6, "description", 
collection.getDescription());
                 for (String urlPattern : collection.findPatterns()) {
-                    appendElement(sb, INDENT6, "url-pattern", 
encodeUrl(urlPattern));
+                    appendElement(sb, INDENT6, "url-pattern", urlPattern);
                 }
                 for (String method : collection.findMethods()) {
                     appendElement(sb, INDENT6, "http-method", method);
@@ -1797,8 +1792,8 @@ public class WebXml {
             appendElement(sb, INDENT4, "realm-name", 
loginConfig.getRealmName());
             if (loginConfig.getErrorPage() != null || 
loginConfig.getLoginPage() != null) {
                 sb.append("    <form-login-config>\n");
-                appendElement(sb, INDENT6, "form-login-page", 
loginConfig.getLoginPage(), true);
-                appendElement(sb, INDENT6, "form-error-page", 
loginConfig.getErrorPage(), true);
+                appendElement(sb, INDENT6, "form-login-page", 
loginConfig.getLoginPage());
+                appendElement(sb, INDENT6, "form-error-page", 
loginConfig.getErrorPage());
                 sb.append("    </form-login-config>\n");
             }
             sb.append("  </login-config>\n\n");
@@ -2018,21 +2013,7 @@ public class WebXml {
     }
 
 
-    private synchronized String encodeUrl(String input) {
-        try {
-            return urlEncoder.encodeURL(input, 0, input.length()).toString();
-        } catch (IOException e) {
-            throw new IllegalArgumentException(input, e);
-        }
-    }
-
-
     private void appendElement(StringBuilder sb, String indent, String 
elementName, String value) {
-        appendElement(sb, indent, elementName, value, false);
-    }
-
-    private void appendElement(StringBuilder sb, String indent, String 
elementName, String value, boolean encodeValue) {
-
         if (value == null) {
             return;
         }
@@ -2046,11 +2027,7 @@ public class WebXml {
             sb.append('<');
             sb.append(elementName);
             sb.append('>');
-            if (encodeValue) {
-                sb.append(Escape.xml(encodeUrl(value)));
-            } else {
-                sb.append(Escape.xml(value));
-            }
+            sb.append(Escape.xml(value));
             sb.append("</");
             sb.append(elementName);
             sb.append(">\n");


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

Reply via email to