File tomcat-8.0.32-regression-bug56917.patch of Package tomcat.3377
Index: test/org/apache/catalina/connector/TestResponse.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- test/org/apache/catalina/connector/TestResponse.java (date 1454441552000)
+++ test/org/apache/catalina/connector/TestResponse.java (revision )
@@ -38,6 +38,7 @@
import org.apache.catalina.Context;
import org.apache.catalina.startup.Tomcat;
import org.apache.catalina.startup.TomcatBaseTest;
+import org.apache.tomcat.unittest.TesterContext;
import org.apache.tomcat.unittest.TesterRequest;
import org.apache.tomcat.util.buf.ByteChunk;
@@ -574,6 +575,45 @@
public void testEncodeRedirectURL16() throws Exception {
doTestEncodeURL("./..#/../..", "./..;jsessionid=1234#/../..");
} @Test
+ public void testSendRedirect01() throws Exception {
+ doTestSendRedirect("../foo", "../foo");
+ }
+
+
+ @Test
+ public void testSendRedirect02() throws Exception {
+ doTestSendRedirect("../foo bar", "../foo bar");
+ }
+
+
+ @Test
+ public void testSendRedirect03() throws Exception {
+ doTestSendRedirect("../foo%20bar", "../foo%20bar");
+ }
+
+
+ private void doTestSendRedirect(String input, String expectedLocation) throws Exception {
+ // Set-up.
+ // Note: Not sufficient for testing relative -> absolute
+ Connector connector = new Connector();
+ org.apache.coyote.Response cResponse = new org.apache.coyote.Response();
+ Response response = new Response();
+ response.setConnector(connector);
+ response.setCoyoteResponse(cResponse);
+ Request request = new Request();
+ org.apache.coyote.Request cRequest = new org.apache.coyote.Request();
+ request.setCoyoteRequest(cRequest);
+ Context context = new TesterContext();
+ request.getMappingData().context = context;
+ response.setRequest(request);
+ // Do test
+ response.sendRedirect(input);
+ String location = response.getHeader("Location");
+ Assert.assertEquals(expectedLocation, location);
+ }
+
+
+ @Test
public void testBug53469a() throws Exception {
Request req = new TesterRequest();
Response resp = new Response();
Index: java/org/apache/catalina/connector/Response.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- java/org/apache/catalina/connector/Response.java (date 1454441552000)
+++ java/org/apache/catalina/connector/Response.java (revision )
@@ -19,7 +19,6 @@
import java.io.IOException;
import java.io.PrintWriter;
import java.net.MalformedURLException;
-import java.net.URI;
import java.net.URL;
import java.nio.charset.Charset;
import java.security.AccessController;
@@ -1277,7 +1276,7 @@
// Relative redirects require HTTP/1.1
if (getRequest().getCoyoteRequest().getSupportsRelativeRedirects() &&
getContext().getUseRelativeRedirects()) {
- locationUri = URI.create(location).toASCIIString();
+ locationUri = location;
} else {
locationUri = toAbsolute(location);
}