This is an automated email from the ASF dual-hosted git repository.
markt pushed a commit to branch 8.5.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/8.5.x by this push:
new ab256a5 Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=63864
ab256a5 is described below
commit ab256a555165db803ae2f9f7afaa3279d1050ddc
Author: Mark Thomas <[email protected]>
AuthorDate: Tue Oct 29 18:42:12 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.
---
java/org/apache/coyote/http11/Http11Processor.java | 22 ++++++++--------------
webapps/docs/changelog.xml | 5 +++++
2 files changed, 13 insertions(+), 14 deletions(-)
diff --git a/java/org/apache/coyote/http11/Http11Processor.java
b/java/org/apache/coyote/http11/Http11Processor.java
index e984616..bde3b6f 100644
--- a/java/org/apache/coyote/http11/Http11Processor.java
+++ b/java/org/apache/coyote/http11/Http11Processor.java
@@ -19,7 +19,9 @@ package org.apache.coyote.http11;
import java.io.IOException;
import java.io.InterruptedIOException;
import java.nio.ByteBuffer;
+import java.util.ArrayList;
import java.util.HashSet;
+import java.util.List;
import java.util.Locale;
import java.util.Set;
import java.util.regex.Pattern;
@@ -450,8 +452,7 @@ public class Http11Processor extends AbstractProcessor {
*/
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)
+ // Parsing trims and converts to lower case.
encodingName = encodingName.trim().toLowerCase(Locale.ENGLISH);
if (encodingName.equals("identity")) {
@@ -965,20 +966,13 @@ public class Http11Processor extends AbstractProcessor {
// Parse transfer-encoding header
if (http11) {
MessageBytes 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<>();
+ 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);
}
}
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index 9e6abdb..76b6c18 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -84,6 +84,11 @@
insensitive. (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>
+ <fix>
<bug>63865</bug>: Add <code>Unset</code> option to same-site cookies
and pass through <code>None</code> value if set by user. Patch provided
by John Kelly. (markt)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]