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

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


The following commit(s) were added to refs/heads/7.0.x by this push:
     new 8b3ad14  Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=63864
8b3ad14 is described below

commit 8b3ad14673c21290918ddeb38a28c6af4170e6f9
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Tue Oct 29 18:54:46 2019 +0100

    Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=63864
    
    Refactor parsing of the transfer-encoding request header to use the
    shared parsing code and reduce duplication.
---
 .../coyote/http11/AbstractHttp11Processor.java     | 23 +++++++---------------
 webapps/docs/changelog.xml                         |  5 +++++
 2 files changed, 12 insertions(+), 16 deletions(-)

diff --git a/java/org/apache/coyote/http11/AbstractHttp11Processor.java 
b/java/org/apache/coyote/http11/AbstractHttp11Processor.java
index 2064f93..288b4ed 100644
--- a/java/org/apache/coyote/http11/AbstractHttp11Processor.java
+++ b/java/org/apache/coyote/http11/AbstractHttp11Processor.java
@@ -19,10 +19,10 @@ package org.apache.coyote.http11;
 import java.io.IOException;
 import java.io.InterruptedIOException;
 import java.io.StringReader;
+import java.util.ArrayList;
 import java.util.Enumeration;
 import java.util.HashSet;
 import java.util.List;
-import java.util.Locale;
 import java.util.Set;
 import java.util.StringTokenizer;
 import java.util.concurrent.atomic.AtomicBoolean;
@@ -802,9 +802,7 @@ public abstract class AbstractHttp11Processor<S> extends 
AbstractProcessor<S> {
      */
     private void addInputFilter(InputFilter[] inputFilters, String 
encodingName) {
 
-        // Trim provided encoding name and convert to lower case since transfer
-        // encoding names are case insensitive. (RFC2616, section 3.6)
-        encodingName = encodingName.trim().toLowerCase(Locale.ENGLISH);
+        // Parsing trims and converts to lower case.
 
         if (encodingName.equals("identity")) {
             // Skip
@@ -1511,20 +1509,13 @@ public abstract class AbstractHttp11Processor<S> 
extends AbstractProcessor<S> {
         if (http11) {
             transferEncodingValueMB = headers.getValue("transfer-encoding");
         }
-        if (transferEncodingValueMB != null && 
!transferEncodingValueMB.isNull()) {
-            String transferEncodingValue = transferEncodingValueMB.toString();
-            // Parse the comma separated list. "identity" codings are ignored
-            int startPos = 0;
-            int commaPos = transferEncodingValue.indexOf(',');
-            String encodingName = null;
-            while (commaPos != -1) {
-                encodingName = transferEncodingValue.substring(startPos, 
commaPos);
+        if (transferEncodingValueMB != null) {
+            List<String> encodingNames = new ArrayList<String>();
+            TokenList.parseTokenList(headers.values("transfer-encoding"), 
encodingNames);
+            for (String encodingName : encodingNames) {
+                // "identity" codings are ignored
                 addInputFilter(inputFilters, encodingName);
-                startPos = commaPos + 1;
-                commaPos = transferEncodingValue.indexOf(',', startPos);
             }
-            encodingName = transferEncodingValue.substring(startPos);
-            addInputFilter(inputFilters, encodingName);
         }
 
         // Parse content-length header
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index b522a83..f150d08 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -102,6 +102,11 @@
         <bug>63836</bug>: Ensure that the memory reserved for the OOME 
parachute
         is released when the NIO endpoint is stopped. (markt)
       </fix>
+      <fix>
+        <bug>63864</bug>: Refactor parsing of the 
<code>transfer-encoding</code>
+        request header to use the shared parsing code and reduce duplication.
+        (markt)
+      </fix>
     </changelog>
   </subsection>
   <subsection name="Other">


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

Reply via email to