You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2009/02/21 01:44:33 UTC

svn commit: r746425 - in /tomcat/trunk/java/org/apache/jasper/el: ELContextImpl.java ELResolverImpl.java ExpressionEvaluatorImpl.java

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: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org