-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

John,

Quick question: what exact Tomcat version are you running?

- -chris

On 3/24/16 12:02 PM, Johan Compagner wrote:
> Hi,
> 
> we now get this exception:
> 
> java.lang.StringIndexOutOfBoundsException: String index out of
> range: 3 at java.lang.String.charAt(String.java:658) at 
> org.apache.catalina.loader.WebappClassLoaderBase.filter(WebappClassLoa
derBase.java:2780)
>
> 
at
> org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClass
LoaderBase.java:1253)
>
> 
at java.lang.ClassLoader.loadClass(ClassLoader.java:411)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:411) at
> java.lang.ClassLoader.loadClass(ClassLoader.java:411) at
> java.lang.ClassLoader.loadClass(ClassLoader.java:357) at
> org.mozilla.javascript.Kit.classOrNull(Kit.java:89) at 
> org.mozilla.javascript.NativeJavaPackage.getPkgProperty(NativeJavaPack
age.java:154)
>
> 
at
> org.mozilla.javascript.NativeJavaPackage.get(NativeJavaPackage.java:11
1)
>
> 
at
> org.mozilla.javascript.NativeJavaTopPackage.init(NativeJavaTopPackage.
java:119)
>
> 
> 
> that is because WebappClassLoaderBase.filter() is really changed in
> this release and assumes:
> 
> } else if (name.startsWith("org")) { /* 3 == length("org") */ ch =
> name.charAt(3);
> 
> that when it gets "org" it can get the 4 the (position 3) char That
> bombs out now
> 
> This is because NativeJavaPackage tries to load anything that it
> gets through its get method so it does try "org" until it sees
> somethign that is a class. (so org.xxx then org.xxx.Yyy will be
> seen as a class)
> 
> I guess that code could be written with a simple length check in
> that if above or write it a bit different and have something like:
> 
> } else if (isClassName && name.startsWith("org.apache.")) { /* 11
> == length("org.apache.") */ if (name.startsWith("tomcat.jdbc.",
> 11)) { return false; } if (name.startsWith("el.", 11) || 
> name.startsWith("catalina.", 11) || name.startsWith("jasper.", 11)
> || name.startsWith("juli.", 11) || name.startsWith("tomcat.", 11)
> || name.startsWith("naming.", 11) || name.startsWith("coyote.",
> 11)) { return true; } } else if (!isClassName &&
> name.startsWith("org/apache/")) { /* 11 == length("org/apache/")
> */ if (name.startsWith("tomcat/jdbc/", 11)) { return false; } if
> (name.startsWith("el/", 11) || name.startsWith("catalina/", 11) || 
> name.startsWith("jasper/", 11) || name.startsWith("juli/", 11) || 
> name.startsWith("tomcat/", 11) || name.startsWith("naming/", 11)
> || name.startsWith("coyote/", 11)) { return true; } }
> 
> *that seems a bit shorter and should do the same.*
> 
-----BEGIN PGP SIGNATURE-----
Comment: GPGTools - http://gpgtools.org
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iEYEARECAAYFAlb0MsEACgkQ9CaO5/Lv0PChFACguLV1eOlvZ9QGIM7d6ywWvCwk
ulQAn3Yj/wwG34k6Gh1isN/EImBEQ/tm
=7DjR
-----END PGP SIGNATURE-----

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

Reply via email to