Correct behavior verified as follows:
lxc launch ubuntu-daily:xenial tester && lxc exec tester bash apt update && apt dist-upgrade -y && apt install -y tomcat8 && mkdir -p /var/lib/tomcat8/webapps/test && echo '<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>$Title$</title> </head> <body> <% Class.forName("org"); %> </body> </html> ' >/var/lib/tomcat8/webapps/test/test.jsp && service tomcat8 restart && curl localhost:8080/test/test.jsp
This results in the following erroneous jsp exception:
java.lang.StringIndexOutOfBoundsException: String index out of range: 3 java.lang.String.charAt(String.java:658) org.apache.catalina.loader.WebappClassLoaderBase.filter(WebappClassLoaderBase.java:2802) org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1254) org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1143) org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:125) org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:62) java.lang.Class.forName0(Native Method) java.lang.Class.forName(Class.java:264) org.apache.jsp.test_jsp._jspService(test_jsp.java:116) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:401) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:345) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Upgrade to the version in proposed and re-run the test:
echo "deb http://archive.ubuntu.com/ubuntu xenial-proposed main restricted" >>/etc/apt/sources.list && apt update && apt dist-upgrade -y && curl localhost:8080/test/test.jsp
This results in a jsp exception with a proper root cause:
java.lang.ClassNotFoundException: org org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1309) org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1143) org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:125) org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:62) java.lang.Class.forName0(Native Method) java.lang.Class.forName(Class.java:264) org.apache.jsp.test_jsp._jspService(test_jsp.java:116) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:401) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:345) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Correct behavior verified as follows:
lxc launch ubuntu-daily:xenial tester && lxc exec tester bash tomcat8/ webapps/ test && echo '<%@ page contentType= "text/html; charset= UTF-8" language="java" %>
<title> $Title$ </title>
Class. forName( "org"); tomcat8/ webapps/ test/test. jsp && 8080/test/ test.jsp
apt update && apt dist-upgrade -y && apt install -y tomcat8 && mkdir -p /var/lib/
<html>
<head>
</head>
<body>
<%
%>
</body>
</html>
' >/var/lib/
service tomcat8 restart &&
curl localhost:
This results in the following erroneous jsp exception:
java.lang. StringIndexOutO fBoundsExceptio n: String index out of range: 3 lang.String. charAt( String. java:658) apache. catalina. loader. WebappClassLoad erBase. filter( WebappClassLoad erBase. java:2802) apache. catalina. loader. WebappClassLoad erBase. loadClass( WebappClassLoad erBase. java:1254) apache. catalina. loader. WebappClassLoad erBase. loadClass( WebappClassLoad erBase. java:1143) apache. jasper. servlet. JasperLoader. loadClass( JasperLoader. java:125) apache. jasper. servlet. JasperLoader. loadClass( JasperLoader. java:62) lang.Class. forName0( Native Method) lang.Class. forName( Class.java: 264) apache. jsp.test_ jsp._jspService (test_jsp. java:116) apache. jasper. runtime. HttpJspBase. service( HttpJspBase. java:70) servlet. http.HttpServle t.service( HttpServlet. java:729) apache. jasper. servlet. JspServletWrapp er.service( JspServletWrapp er.java: 438) apache. jasper. servlet. JspServlet. serviceJspFile( JspServlet. java:401) apache. jasper. servlet. JspServlet. service( JspServlet. java:345) servlet. http.HttpServle t.service( HttpServlet. java:729) apache. tomcat. websocket. server. WsFilter. doFilter( WsFilter. java:52)
java.
org.
org.
org.
org.
org.
java.
java.
org.
org.
javax.
org.
org.
org.
javax.
org.
Upgrade to the version in proposed and re-run the test:
echo "deb http:// archive. ubuntu. com/ubuntu xenial-proposed main restricted" >>/etc/ apt/sources. list && 8080/test/ test.jsp
apt update &&
apt dist-upgrade -y &&
curl localhost:
This results in a jsp exception with a proper root cause:
java.lang. ClassNotFoundEx ception: org apache. catalina. loader. WebappClassLoad erBase. loadClass( WebappClassLoad erBase. java:1309) apache. catalina. loader. WebappClassLoad erBase. loadClass( WebappClassLoad erBase. java:1143) apache. jasper. servlet. JasperLoader. loadClass( JasperLoader. java:125) apache. jasper. servlet. JasperLoader. loadClass( JasperLoader. java:62) lang.Class. forName0( Native Method) lang.Class. forName( Class.java: 264) apache. jsp.test_ jsp._jspService (test_jsp. java:116) apache. jasper. runtime. HttpJspBase. service( HttpJspBase. java:70) servlet. http.HttpServle t.service( HttpServlet. java:729) apache. jasper. servlet. JspServletWrapp er.service( JspServletWrapp er.java: 438) apache. jasper. servlet. JspServlet. serviceJspFile( JspServlet. java:401) apache. jasper. servlet. JspServlet. service( JspServlet. java:345) servlet. http.HttpServle t.service( HttpServlet. java:729) apache. tomcat. websocket. server. WsFilter. doFilter( WsFilter. java:52)
org.
org.
org.
org.
java.
java.
org.
org.
javax.
org.
org.
org.
javax.
org.