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

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


The following commit(s) were added to refs/heads/master by this push:
     new d0877a6  Remove two system properties used for configuration
d0877a6 is described below

commit d0877a698fe23f633747f429e43ce40d5f8d3ed7
Author: remm <r...@apache.org>
AuthorDate: Wed Mar 25 17:58:08 2020 +0100

    Remove two system properties used for configuration
    
    Two rarely used properties, both in the connector package:
    - org.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH is
    replaced by the allowBackslash attribute
    - org.apache.catalina.connector.Response.ENFORCE_ENCODING_IN_GET_WRITER
    is replaced by the enforceEncodingInGetWriter attribute
---
 java/org/apache/catalina/connector/Connector.java  | 57 ++++++++++++++++++++++
 .../apache/catalina/connector/CoyoteAdapter.java   | 11 ++---
 java/org/apache/catalina/connector/Response.java   | 17 +------
 .../catalina/connector/TestCoyoteAdapter.java      |  2 +-
 webapps/docs/changelog.xml                         | 13 +++++
 webapps/docs/config/systemprops.xml                | 18 -------
 6 files changed, 76 insertions(+), 42 deletions(-)

diff --git a/java/org/apache/catalina/connector/Connector.java 
b/java/org/apache/catalina/connector/Connector.java
index 43b9431..ec65163 100644
--- a/java/org/apache/catalina/connector/Connector.java
+++ b/java/org/apache/catalina/connector/Connector.java
@@ -118,6 +118,14 @@ public class Connector extends LifecycleMBeanBase  {
 
 
     /**
+     * If this is <code>true</code> the '\' character will be permitted as a
+     * path delimiter. If not specified, the default value of
+     * <code>false</code> will be used.
+     */
+    protected boolean allowBackslash = false;
+
+
+    /**
      * Do we allow TRACE ?
      */
     protected boolean allowTrace = false;
@@ -135,6 +143,19 @@ public class Connector extends LifecycleMBeanBase  {
     protected boolean enableLookups = false;
 
 
+    /**
+     * If this is <code>true</code> then a call to
+     * <code>Response.getWriter()</code> if no character encoding
+     * has been specified will result in subsequent calls to
+     * <code>Response.getCharacterEncoding()</code> returning
+     * <code>ISO-8859-1</code> and the <code>Content-Type</code> response 
header
+     * will include a <code>charset=ISO-8859-1</code> component.
+     * (SRV.15.2.22.1)
+     * If not specified, the default specification compliant value of
+     * <code>true</code> will be used.
+     */
+    protected boolean enforceEncodingInGetWriter = true;
+
     /*
      * Is generation of X-Powered-By response header enabled/disabled?
      */
@@ -339,6 +360,24 @@ public class Connector extends LifecycleMBeanBase  {
 
 
     /**
+     * @return <code>true</code> if backslash characters are allowed in URLs.
+     *   Default value is <code>false</code>.
+     */
+    public boolean getAllowBackslash() {
+        return allowBackslash;
+    }
+
+
+    /**
+     * Set the allowBackslash flag.
+     * @param allowBackslash the new flag value
+     */
+    public void setAllowBackslash(boolean allowBackslash) {
+        this.allowBackslash = allowBackslash;
+    }
+
+
+    /**
      * @return <code>true</code> if the TRACE method is allowed. Default value
      *         is <code>false</code>.
      */
@@ -415,6 +454,24 @@ public class Connector extends LifecycleMBeanBase  {
     }
 
 
+    /**
+     * @return <code>true</code> if a default character encoding will be set
+     *   when calling Response.getWriter()
+     */
+    public boolean getEnforceEncodingInGetWriter() {
+        return enforceEncodingInGetWriter;
+    }
+
+
+    /**
+     * Set the enforceEncodingInGetWriter flag.
+     * @param enforceEncodingInGetWriter the new flag value
+     */
+    public void setEnforceEncodingInGetWriter(boolean 
enforceEncodingInGetWriter) {
+        this.enforceEncodingInGetWriter = enforceEncodingInGetWriter;
+    }
+
+
     public int getMaxCookieCount() {
         return maxCookieCount;
     }
diff --git a/java/org/apache/catalina/connector/CoyoteAdapter.java 
b/java/org/apache/catalina/connector/CoyoteAdapter.java
index 3b6f7e9..9bfe301 100644
--- a/java/org/apache/catalina/connector/CoyoteAdapter.java
+++ b/java/org/apache/catalina/connector/CoyoteAdapter.java
@@ -78,10 +78,6 @@ public class CoyoteAdapter implements Adapter {
     public static final int ADAPTER_NOTES = 1;
 
 
-    protected static final boolean ALLOW_BACKSLASH =
-        
Boolean.parseBoolean(System.getProperty("org.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH",
 "false"));
-
-
     private static final ThreadLocal<String> THREAD_NAME =
             new ThreadLocal<String>() {
 
@@ -635,7 +631,7 @@ public class CoyoteAdapter implements Adapter {
                 response.sendError(400, "Invalid URI: " + ioe.getMessage());
             }
             // Normalization
-            if (normalize(req.decodedURI())) {
+            if (normalize(req.decodedURI(), connector.getAllowBackslash())) {
                 // Character decoding
                 convertURI(decodedURI, request);
                 // URIEncoding values are limited to US-ASCII supersets.
@@ -1127,12 +1123,13 @@ public class CoyoteAdapter implements Adapter {
      * This method normalizes "\", "//", "/./" and "/../".
      *
      * @param uriMB URI to be normalized
+     * @param allowBackslash <code>true</code> if backslash characters are 
allowed in URLs
      *
      * @return <code>false</code> if normalizing this URI would require going
      *         above the root, or if the URI contains a null byte, otherwise
      *         <code>true</code>
      */
-    public static boolean normalize(MessageBytes uriMB) {
+    public static boolean normalize(MessageBytes uriMB, boolean 
allowBackslash) {
 
         ByteChunk uriBC = uriMB.getByteChunk();
         final byte[] b = uriBC.getBytes();
@@ -1151,7 +1148,7 @@ public class CoyoteAdapter implements Adapter {
         // Check for null byte
         for (pos = start; pos < end; pos++) {
             if (b[pos] == (byte) '\\') {
-                if (ALLOW_BACKSLASH) {
+                if (allowBackslash) {
                     b[pos] = (byte) '/';
                 } else {
                     return false;
diff --git a/java/org/apache/catalina/connector/Response.java 
b/java/org/apache/catalina/connector/Response.java
index 9ec0b5d..17d086b 100644
--- a/java/org/apache/catalina/connector/Response.java
+++ b/java/org/apache/catalina/connector/Response.java
@@ -74,21 +74,6 @@ public class Response implements HttpServletResponse {
 
     private static final MediaTypeCache MEDIA_TYPE_CACHE = new 
MediaTypeCache(100);
 
-    /**
-     * Compliance with SRV.15.2.22.1. A call to Response.getWriter() if no
-     * character encoding has been specified will result in subsequent calls to
-     * Response.getCharacterEncoding() returning ISO-8859-1 and the 
Content-Type
-     * response header will include a charset=ISO-8859-1 component.
-     */
-    private static final boolean ENFORCE_ENCODING_IN_GET_WRITER;
-
-    static {
-        ENFORCE_ENCODING_IN_GET_WRITER = Boolean.parseBoolean(
-                
System.getProperty("org.apache.catalina.connector.Response.ENFORCE_ENCODING_IN_GET_WRITER",
-                        "true"));
-    }
-
-
     // ----------------------------------------------------- Instance Variables
 
     public Response() {
@@ -572,7 +557,7 @@ public class Response implements HttpServletResponse {
                 (sm.getString("coyoteResponse.getWriter.ise"));
         }
 
-        if (ENFORCE_ENCODING_IN_GET_WRITER) {
+        if (request.getConnector().getEnforceEncodingInGetWriter()) {
             /*
              * If the response's character encoding has not been specified as
              * described in <code>getCharacterEncoding</code> (i.e., the method
diff --git a/test/org/apache/catalina/connector/TestCoyoteAdapter.java 
b/test/org/apache/catalina/connector/TestCoyoteAdapter.java
index 93692af..464ca90 100644
--- a/test/org/apache/catalina/connector/TestCoyoteAdapter.java
+++ b/test/org/apache/catalina/connector/TestCoyoteAdapter.java
@@ -333,7 +333,7 @@ public class TestCoyoteAdapter extends TomcatBaseTest {
         byte[] b = input.getBytes(StandardCharsets.UTF_8);
         mb.setBytes(b, 0, b.length);
 
-        boolean result = CoyoteAdapter.normalize(mb);
+        boolean result = CoyoteAdapter.normalize(mb, false);
         mb.toString();
 
         if (expected == null) {
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index e8452cd..9e7f153 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -74,6 +74,19 @@
         Refactor DefaultServlet to avoid using an internal Range structure that
         is duplicated from the parsing result. (remm)
       </update>
+      <update>
+        Remove
+        
<code>org.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH</code>
+        system property, replaced by the <code>allowBackslash</code> attribute
+        on the Connector. (remm)
+      </update>
+      <update>
+        Remove
+        
<code>org.apache.catalina.connector.Response.ENFORCE_ENCODING_IN_GET_WRITER</code>
+        system property, replaced by the
+        <code>enforceEncodingInGetWriter</code> attribute on the Connector.
+        (remm)
+      </update>
     </changelog>
   </subsection>
   <subsection name="Coyote">
diff --git a/webapps/docs/config/systemprops.xml 
b/webapps/docs/config/systemprops.xml
index bd4a98a..0188a53 100644
--- a/webapps/docs/config/systemprops.xml
+++ b/webapps/docs/config/systemprops.xml
@@ -264,13 +264,6 @@
   <properties>
 
     <property
-    name="org.apache.catalina.connector. CoyoteAdapter.ALLOW_BACKSLASH">
-      <p>If this is <code>true</code> the '\' character will be permitted as a
-      path delimiter.</p>
-      <p>If not specified, the default value of <code>false</code> will be 
used.</p>
-    </property>
-
-    <property
     name="org.apache.tomcat.util.buf. UDecoder.ALLOW_ENCODED_SLASH">
       <p>If this is <code>true</code> '%2F' and '%5C' will be permitted as path
       delimiters.</p>
@@ -312,17 +305,6 @@
       </ul>
     </property>
 
-    <property name="org.apache.catalina.connector. 
Response.ENFORCE_ENCODING_IN_GET_WRITER">
-      <p>If this is <code>true</code> then
-      a call to <code>Response.getWriter()</code> if no character encoding
-      has been specified will result in subsequent calls to
-      <code>Response.getCharacterEncoding()</code> returning
-      <code>ISO-8859-1</code> and the <code>Content-Type</code> response header
-      will include a <code>charset=ISO-8859-1</code> component. 
(SRV.15.2.22.1)</p>
-      <p>If not specified, the default specification compliant value of
-      <code>true</code> will be used.</p>
-    </property>
-
     <property name="org.apache.catalina.core.ApplicationContext 
.GET_RESOURCE_REQUIRE_SLASH">
       <p>If this is <code>true</code> then the path passed to
       <code>ServletContext.getResource()</code> or


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to