[ 
https://issues.apache.org/jira/browse/FELIX-5093?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Xavier Fournet updated FELIX-5093:
----------------------------------
    Description: 
The HttpServletRequest.getRequestURI must return the URI without processing % 
escaping. Since version 3.1.0 this processing is done, so the returned value is 
incorrect. For exemple this can lead to error in Apache Shiro when it try to 
unescape % of an URI.

See the attached jar for a bundle that can be used to reproduce the problem:
* load the bundle
* with a browser go on http://localhost:8080/requesturibug/test%2Ftest%25test

With HTTP Jetty < 3.1.0 it prints:
{noformat}
Request URI: /requesturibug/test%2Ftest%25test 
(org.apache.felix.http.base.internal.handler.ServletHandlerRequest)
Wrapped URI: /requesturibug/test%2Ftest%25test 
(org.apache.felix.http.base.internal.dispatch.FilterPipeline$FilterRequestWrapper)
Wrapped URI: /requesturibug/test%2Ftest%25test 
(org.apache.felix.http.base.internal.DispatcherServlet$AttributeEventRequest)
Wrapped URI: /requesturibug/test%2Ftest%25test 
(org.eclipse.jetty.server.Request)
{noformat}

=> request URI is ok

With HTTP Jetty 3.1.0 or 3.1.2 it prints:
{noformat}
Request URI: /requesturibug/test/test%test 
(org.apache.felix.http.base.internal.dispatch.ServletRequestWrapper)
Wrapped URI: /requesturibug/test%2Ftest%25test 
(org.eclipse.jetty.server.Request)
{noformat}

=> request URI is wrong while the underlying request URI returned by Jetty 
itself is correct.
When this request come the Shiro filter it will issue an exception because it 
will try to unescape "%te" which is not valid since "te" is not a number


  was:
The HttpServletRequest.getRequestURI must return the URI without processing % 
escaping. Since version 3.1.0 this processing is done, so the returned value is 
incorrect. For exemple this can lead to error in Apache Shiro when it try to 
unescape % of an URI.

See the attached jar for a bundle that can be used to reproduce the problem:
* load the bundle
* with a browser go on http://localhost:8080/requesturibug/test%2Ftest%25test

With HTTP Jetty < 3.1.0 it prints:
{noformat}
Request URI: /requesturibug/test%2Ftest%25test 
(org.apache.felix.http.base.internal.handler.ServletHandlerRequest)
Wrapped URI: /requesturibug/test%2Ftest%25test 
(org.apache.felix.http.base.internal.dispatch.FilterPipeline$FilterRequestWrapper)
Wrapped URI: /requesturibug/test%2Ftest%25test 
(org.apache.felix.http.base.internal.DispatcherServlet$AttributeEventRequest)
Wrapped URI: /requesturibug/test%2Ftest%25test 
(org.eclipse.jetty.server.Request)
{noformat}

=> request URI is ok

With HTTP Jetty 3.1.0 or 3.1.2 it prints:
{noformat}
Request URI: /requesturibug/test/test%test 
(org.apache.felix.http.base.internal.dispatch.ServletRequestWrapper)
Wrapped URI: /requesturibug/test%2Ftest%25test 
(org.eclipse.jetty.server.Request)
{noformat}

=> request URI is wrong while the underlying request URI returned by Jetty 
itself is correct



> HttpServletRequest.getRequestURI is broken for escaped char in URL since 3.1.0
> ------------------------------------------------------------------------------
>
>                 Key: FELIX-5093
>                 URL: https://issues.apache.org/jira/browse/FELIX-5093
>             Project: Felix
>          Issue Type: Bug
>          Components: HTTP Service
>    Affects Versions: http.jetty-3.1.0, http.jetty-3.1.2
>            Reporter: Xavier Fournet
>            Priority: Blocker
>         Attachments: requesturibug-1.0.0-SNAPSHOT.jar, 
> requesturibug-sources.zip
>
>
> The HttpServletRequest.getRequestURI must return the URI without processing % 
> escaping. Since version 3.1.0 this processing is done, so the returned value 
> is incorrect. For exemple this can lead to error in Apache Shiro when it try 
> to unescape % of an URI.
> See the attached jar for a bundle that can be used to reproduce the problem:
> * load the bundle
> * with a browser go on http://localhost:8080/requesturibug/test%2Ftest%25test
> With HTTP Jetty < 3.1.0 it prints:
> {noformat}
> Request URI: /requesturibug/test%2Ftest%25test 
> (org.apache.felix.http.base.internal.handler.ServletHandlerRequest)
> Wrapped URI: /requesturibug/test%2Ftest%25test 
> (org.apache.felix.http.base.internal.dispatch.FilterPipeline$FilterRequestWrapper)
> Wrapped URI: /requesturibug/test%2Ftest%25test 
> (org.apache.felix.http.base.internal.DispatcherServlet$AttributeEventRequest)
> Wrapped URI: /requesturibug/test%2Ftest%25test 
> (org.eclipse.jetty.server.Request)
> {noformat}
> => request URI is ok
> With HTTP Jetty 3.1.0 or 3.1.2 it prints:
> {noformat}
> Request URI: /requesturibug/test/test%test 
> (org.apache.felix.http.base.internal.dispatch.ServletRequestWrapper)
> Wrapped URI: /requesturibug/test%2Ftest%25test 
> (org.eclipse.jetty.server.Request)
> {noformat}
> => request URI is wrong while the underlying request URI returned by Jetty 
> itself is correct.
> When this request come the Shiro filter it will issue an exception because it 
> will try to unescape "%te" which is not valid since "te" is not a number



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to