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 bcacd78 Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=63312 bcacd78 is described below commit bcacd783e2593ae9b2c07a561bd5f95a145a7761 Author: Mark Thomas <ma...@apache.org> AuthorDate: Mon Apr 30 10:57:27 2018 +0000 Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=63312 Correct a regression in the error page handling that prevented error pages from issuing redirects or taking other action that required the response status code to be changed. --- java/org/apache/coyote/Response.java | 4 ---- java/org/apache/coyote/http11/Http11InputBuffer.java | 6 ++++++ webapps/docs/changelog.xml | 5 +++++ 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/java/org/apache/coyote/Response.java b/java/org/apache/coyote/Response.java index cc50bae..c3ee057 100644 --- a/java/org/apache/coyote/Response.java +++ b/java/org/apache/coyote/Response.java @@ -224,10 +224,6 @@ public final class Response { * @param status The status value to set */ public void setStatus(int status) { - if (this.status > 399) { - // Don't overwrite first recorded error status - return; - } this.status = status; } diff --git a/java/org/apache/coyote/http11/Http11InputBuffer.java b/java/org/apache/coyote/http11/Http11InputBuffer.java index dfed9e8..620f381 100644 --- a/java/org/apache/coyote/http11/Http11InputBuffer.java +++ b/java/org/apache/coyote/http11/Http11InputBuffer.java @@ -425,6 +425,8 @@ public class Http11InputBuffer implements InputBuffer, ApplicationBufferHandler pos - parsingRequestLineStart); } else if (!HttpParser.isToken(chr)) { byteBuffer.position(byteBuffer.position() - 1); + // Avoid unknown protocol triggering an additional error + request.protocol().setString(Constants.HTTP_11); throw new IllegalArgumentException(sm.getString("iib.invalidmethod")); } } @@ -475,9 +477,13 @@ public class Http11InputBuffer implements InputBuffer, ApplicationBufferHandler } else if (chr == Constants.QUESTION && parsingRequestLineQPos == -1) { parsingRequestLineQPos = pos; } else if (parsingRequestLineQPos != -1 && !httpParser.isQueryRelaxed(chr)) { + // Avoid unknown protocol triggering an additional error + request.protocol().setString(Constants.HTTP_11); // %nn decoding will be checked at the point of decoding throw new IllegalArgumentException(sm.getString("iib.invalidRequestTarget")); } else if (httpParser.isNotRequestTargetRelaxed(chr)) { + // Avoid unknown protocol triggering an additional error + request.protocol().setString(Constants.HTTP_11); // This is a general check that aims to catch problems early // Detailed checking of each part of the request target will // happen in Http11Processor#prepareRequest() diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index 817501f..0bdea65 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -119,6 +119,11 @@ request, reset the stream to inform the client that the remaining request body is not required. (markt) </fix> + <fix> + <bug>63312</bug>: Correct a regression in the error page handling that + prevented error pages from issuing redirects or taking other action that + required the response status code to be changed. (markt) + </fix> </changelog> </subsection> <subsection name="Jasper"> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org