Projects
openEuler:Mainline
tomcat
_service:tar_scm:CVE-2021-33037-2.patch
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:tar_scm:CVE-2021-33037-2.patch of Package tomcat
From 66bd71277cedd04af2772942c697e15d5c401de9 Mon Sep 17 00:00:00 2001 From: Mark Thomas <markt@apache.org> Date: Mon, 10 May 2021 21:59:44 +0100 Subject: [PATCH] Process T-E header from both HTTP 1.0 and HTTP 1.1.clients --- .../apache/coyote/http11/Http11Processor.java | 4 ++- .../coyote/http11/TestHttp11Processor.java | 28 +++++++++++++++++++ webapps/docs/changelog.xml | 4 +++ 3 files changed, 35 insertions(+), 1 deletion(-) diff --git a/java/org/apache/coyote/http11/Http11Processor.java b/java/org/apache/coyote/http11/Http11Processor.java index c840c83..4021355 100644 --- a/java/org/apache/coyote/http11/Http11Processor.java +++ b/java/org/apache/coyote/http11/Http11Processor.java @@ -766,7 +766,9 @@ public class Http11Processor extends AbstractProcessor { InputFilter[] inputFilters = inputBuffer.getFilters(); // Parse transfer-encoding header - if (http11) { + // HTTP specs say an HTTP 1.1 server should accept any recognised + // HTTP 1.x header from a 1.x client unless the specs says otherwise. + if (!http09) { MessageBytes transferEncodingValueMB = headers.getValue("transfer-encoding"); if (transferEncodingValueMB != null) { String transferEncodingValue = transferEncodingValueMB.toString(); diff --git a/test/org/apache/coyote/http11/TestHttp11Processor.java b/test/org/apache/coyote/http11/TestHttp11Processor.java index 1d12007..84fdd42 100644 --- a/test/org/apache/coyote/http11/TestHttp11Processor.java +++ b/test/org/apache/coyote/http11/TestHttp11Processor.java @@ -1353,4 +1353,32 @@ public class TestHttp11Processor extends TomcatBaseTest { Assert.assertTrue(client.isResponse501()); } + + + @Test + public void testWithTEChunkedHttp10() throws Exception { + + getTomcatInstanceTestWebapp(false, true); + + String request = + "POST /test/echo-params.jsp HTTP/1.0" + SimpleHttpClient.CRLF + + "Host: any" + SimpleHttpClient.CRLF + + "Transfer-encoding: chunked" + SimpleHttpClient.CRLF + + "Content-Type: application/x-www-form-urlencoded" + + SimpleHttpClient.CRLF + + "Connection: close" + SimpleHttpClient.CRLF + + SimpleHttpClient.CRLF + + "9" + SimpleHttpClient.CRLF + + "test=data" + SimpleHttpClient.CRLF + + "0" + SimpleHttpClient.CRLF + + SimpleHttpClient.CRLF; + + Client client = new Client(getPort()); + client.setRequest(new String[] {request}); + + client.connect(); + client.processRequest(); + Assert.assertTrue(client.isResponse200()); + Assert.assertTrue(client.getResponseBody().contains("test - data")); + } } diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index 94a0d94..e47f3d6 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -315,6 +315,10 @@ in 2001. Requests using this transfer encoding will now receive a 501 response. (markt) </fix> + <fix> + Process transfer encoding headers from both HTTP 1.0 and HTTP 1.1 + clients. (markt) + </fix> </changelog> </subsection> <subsection name="Web applications"> -- 2.23.0
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2