I've filed a bugs:

https://java.net/jira/browse/JSP-37
https://issues.apache.org/bugzilla/show_bug.cgi?id=55446


On Sun, Aug 18, 2013 at 12:15 PM, Raymond Auge <raymond.a...@liferay.com>wrote:

> Hello everyone,
>
> My name is Raymond Auge and this is my first message to the list.
> Hopefully I follow protocol correctly. Let me know if I don't.
>
> ----
>
> org.apache.jasper.Constants.IS_SECURITY_ENABLED
>
> is a global (static final) constant. As such it is evaluated exactly once.
>
> Since Jasper is typically provided as part of the app server this means
> it's impossible for some later module to enable Java security dynamically.
>
> The Java security API is clearly dynamic. It allows for the creation of
> both security managers and policies created and registered at runtime.
>
> The JVM itself always performs dynamic evaluation of security (normally
> the very same null check which is stored by IS_SECURITY_ENABLED.
>
> Scenario demonstrating a problem:
>
> 1) start tomcat normally (no security)
> 2) assuming any normal app is initialized, a JspRuntimeContext will be
> created and at first invocation
>
> Constants.IS_SECURITY_ENABLED = (System.getSecurityManager() != null);
>
> is evaluated.
>
> 3) deploy some later component (ie. a webapp) which does:
>
> System.setSecurityManager(new SecurityManager());
>
> 4) from that point, all Jasper code will provide the incorrect state, app
> server wide
>
> I realize this is a very long standing mechanism. I'm wondering what would
> be the odds of accepting a patch which enables a dynamic check as opposed
> to global constant.
>
> A further change would be required to initialize security dynamically
> which I think could be done simply enough without incurring significant
> performance issue.
>
> BTW, this issue affects every app server which uses Jasper (including
> users of the JSR RI in the Glassfish project)
>
> Any thoughts?
>
>
> Sincerely,
> --
> *Raymond Augé* <http://www.liferay.com/web/raymond.auge/profile>
>  (@rotty3000)
> Senior Software Architect
> *Liferay, Inc.* <http://www.liferay.com> (@Liferay)
>
>


-- 
*Raymond Augé* <http://www.liferay.com/web/raymond.auge/profile>
 (@rotty3000)
Senior Software Architect
*Liferay, Inc.* <http://www.liferay.com> (@Liferay)

Reply via email to