Author: markt
Date: Sat Feb 21 00:44:33 2009
New Revision: 746425
URL: http://svn.apache.org/viewvc?rev=746425&view=rev
Log:
Address Bill's security concerns in previous patch to get TCK to pass under a
security manager.
TCK passes after this patch with and without security manager.
Modified:
tomcat/trunk/java/org/apache/jasper/el/ELContextImpl.java
tomcat/trunk/java/org/apache/jasper/el/ELResolverImpl.java
tomcat/trunk/java/org/apache/jasper/el/ExpressionEvaluatorImpl.java
Modified: tomcat/trunk/java/org/apache/jasper/el/ELContextImpl.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/el/ELContextImpl.java?rev=746425&r1=746424&r2=746425&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/el/ELContextImpl.java (original)
+++ tomcat/trunk/java/org/apache/jasper/el/ELContextImpl.java Sat Feb 21
00:44:33 2009
@@ -26,6 +26,8 @@
import javax.el.ValueExpression;
import javax.el.VariableMapper;
+import org.apache.catalina.Globals;
+
/**
* Implementation of ELContext
*
@@ -61,12 +63,21 @@
private final ELResolver resolver;
- private FunctionMapper functionMapper = NullFunctionMapper; // immutable
+ private FunctionMapper functionMapper;
private VariableMapper variableMapper;
public ELContextImpl() {
- this(ELResolverImpl.DefaultResolver);
+ this(ELResolverImpl.getDefaultResolver());
+ if (Globals.IS_SECURITY_ENABLED) {
+ functionMapper = new FunctionMapper() {
+ public Method resolveFunction(String prefix, String localName)
{
+ return null;
+ }
+ };
+ } else {
+ functionMapper = NullFunctionMapper;
+ }
}
public ELContextImpl(ELResolver resolver) {
Modified: tomcat/trunk/java/org/apache/jasper/el/ELResolverImpl.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/el/ELResolverImpl.java?rev=746425&r1=746424&r2=746425&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/el/ELResolverImpl.java (original)
+++ tomcat/trunk/java/org/apache/jasper/el/ELResolverImpl.java Sat Feb 21
00:44:33 2009
@@ -32,8 +32,10 @@
import javax.el.ResourceBundleELResolver;
import javax.servlet.jsp.el.VariableResolver;
+import org.apache.catalina.Globals;
+
public final class ELResolverImpl extends ELResolver {
-
+ /** @deprecated - Use getDefaultResolver(). Needs to be made private */
public final static ELResolver DefaultResolver = new
CompositeELResolver();
static {
@@ -69,7 +71,7 @@
}
if (!context.isPropertyResolved()) {
- return DefaultResolver.getValue(context, base,
property);
+ return getDefaultResolver().getValue(context, base,
property);
}
return null;
}
@@ -94,7 +96,7 @@
}
if (!context.isPropertyResolved()) {
- return DefaultResolver.getType(context, base, property);
+ return getDefaultResolver().getType(context, base,
property);
}
return null;
}
@@ -114,7 +116,7 @@
}
if (!context.isPropertyResolved()) {
- DefaultResolver.setValue(context, base, property,
value);
+ getDefaultResolver().setValue(context, base, property,
value);
}
}
@@ -129,18 +131,31 @@
return true;
}
- return DefaultResolver.isReadOnly(context, base, property);
+ return getDefaultResolver().isReadOnly(context, base, property);
}
public Iterator<java.beans.FeatureDescriptor>
getFeatureDescriptors(ELContext context, Object base) {
- return DefaultResolver.getFeatureDescriptors(context, base);
+ return getDefaultResolver().getFeatureDescriptors(context,
base);
}
public Class<?> getCommonPropertyType(ELContext context, Object base) {
if (base == null) {
return String.class;
}
- return DefaultResolver.getCommonPropertyType(context, base);
+ return getDefaultResolver().getCommonPropertyType(context,
base);
}
+ public static ELResolver getDefaultResolver() {
+ if (Globals.IS_SECURITY_ENABLED) {
+ ELResolver defaultResolver = new CompositeELResolver();
+ ((CompositeELResolver) defaultResolver).add(new
MapELResolver());
+ ((CompositeELResolver) defaultResolver).add(new
ResourceBundleELResolver());
+ ((CompositeELResolver) defaultResolver).add(new
ListELResolver());
+ ((CompositeELResolver) defaultResolver).add(new
ArrayELResolver());
+ ((CompositeELResolver) defaultResolver).add(new
BeanELResolver());
+ return defaultResolver;
+ } else {
+ return DefaultResolver;
+ }
+ }
}
Modified: tomcat/trunk/java/org/apache/jasper/el/ExpressionEvaluatorImpl.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/el/ExpressionEvaluatorImpl.java?rev=746425&r1=746424&r2=746425&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/el/ExpressionEvaluatorImpl.java
(original)
+++ tomcat/trunk/java/org/apache/jasper/el/ExpressionEvaluatorImpl.java Sat Feb
21 00:44:33 2009
@@ -37,7 +37,8 @@
public Expression parseExpression(String expression, Class expectedType,
FunctionMapper fMapper) throws ELException {
try {
- ELContextImpl ctx = new
ELContextImpl(ELResolverImpl.DefaultResolver);
+ ELContextImpl ctx =
+ new
ELContextImpl(ELResolverImpl.getDefaultResolver());
if (fMapper != null) {
ctx.setFunctionMapper(new FunctionMapperImpl(fMapper));
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]