On 29/09/2015 20:37, Violeta Georgieva wrote:
> 2015-09-28 14:26 GMT+03:00 Mark Thomas <ma...@apache.org>:

<snip/>

>> The proposed 8.0.27 release is:
>> [ ] Broken - do not release
>> [ ] Stable - go ahead and release as 8.0.27
> 
> I have the following use case [1]. It used to be working with the previous
> version (8.0.26).
> 
> Now it fails with the following [2].

This looks to be caused by the changes for BZ 57316.

> I didn't find in the spec whether this is allowed or not :( however the
> exception is bad.

In what way? The JSP isn't valid so you are getting an exception.

More comments in-line.

> 
> Regards,
> Violeta
> 
> [1]
> 
> Index: org/apache/el/TestELInJsp.java
> ===================================================================
> --- org/apache/el/TestELInJsp.java (revision 1705912)
> +++ org/apache/el/TestELInJsp.java (working copy)
> @@ -318,6 +318,7 @@
>          assertEcho(result, "20-4");
>          assertEcho(result, "21-[{value=11}, {value=12}, {value=13},
> {value=14}]");
>          assertEcho(result, "22-[{value=11}, {value=12}, {value=13},
> {value=14}]");
> +        assertEcho(result, "23-\\\"foo\\\"");
>      }
> 
>      @Test
> Index: webapp/el-misc.jsp
> ===================================================================
> --- webapp/el-misc.jsp (revision 1705912)
> +++ webapp/el-misc.jsp (working copy)
> @@ -41,4 +41,5 @@
>      <p>20-${{1,2,3,4}.stream().max().orElse(-1)}</p>
>      <tags:echo
> echo='21-${{1,2,3,4}.stream().sorted().map(u->{"value":u+10}).toList()}' />
> 
>  <p>22-${{1,2,3,4}.stream().sorted().map(u->{"value":u+10}).toList()}</p>
>  </body>
> +    <tags:echo echo="23-${\"\\\"foo\\\"\"}" />

This is a good example of where things get interesting. The above line
is parsed as follows:

   <tags:echo echo="23-${

is parsed using the JSP spec followed by

\"\\\"foo\\\"\"

which is parsed with the EL spec and then

}" />

is parsed with the JSP spec again.

The problem is in the EL section. You are trying to define a literal so
you do not want to escape the initial and final " characters. By
escaping them you are making them part of the String literal which means
you have an EL expression containing just a literal which is missing the
mandatory quotes.


>  </html>
> \ No newline at end of file
> 
> [2]
> 
>  org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for
> servlet [jsp] in context with path [/test] threw exception [/el-misc.jsp
> (line: 44, column: 21) attribute for " is not properly terminated] with
> root cause
>  org.apache.jasper.JasperException: /el-misc.jsp (line: 44, column: 21)
> attribute for " is not properly terminated

Ah. When you say the exception is bad do you mean it should report
[echo] rather than ["] in the error message above? That does seem like a
reasonable requirement.

So far, I haven't seen anything that I think is serious enough to stop
the 8.0.27 release.

Mark


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to