(tomcat) branch main updated: web.xml logged output should also use decoded URL patterns

[email protected]
Newsgroups gmane.comp.jakarta.tomcat.devel
Message-ID <178712721793.715824.12326772306974068250@gitbox3-he-fi.apache.org>
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");
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.