Port fix for bug 42547. Fix NPE when a ResourceLink tries to override an env-entry.
authormarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Sat, 23 Jun 2007 15:00:51 +0000 (15:00 +0000)
committermarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Sat, 23 Jun 2007 15:00:51 +0000 (15:00 +0000)
git-svn-id: https://svn.apache.org/repos/asf/tomcat/tc6.0.x/trunk@550048 13f79535-47bb-0310-9956-ffa450edef68

java/org/apache/catalina/deploy/NamingResources.java
webapps/docs/changelog.xml

index 26f1e68..cff5966 100644 (file)
@@ -25,6 +25,8 @@ import java.util.HashMap;
 import java.util.Hashtable;
 import java.io.Serializable;
 
+import org.apache.catalina.ServerFactory;
+
 
 /**
  * Holds and manages the naming resources defined in the J2EE Enterprise 
@@ -191,9 +193,27 @@ public class NamingResources implements Serializable {
     public void addEnvironment(ContextEnvironment environment) {
 
         if (entries.containsKey(environment.getName())) {
-            if (findEnvironment(environment.getName()).getOverride()) {
-                removeEnvironment(environment.getName());
+            ContextEnvironment ce = findEnvironment(environment.getName());
+            ContextResourceLink rl = findResourceLink(environment.getName());
+            if (ce != null) {
+                if (ce.getOverride()) {
+                    removeEnvironment(environment.getName());
+                } else {
+                    return;
+                }
+            } else if (rl != null) {
+                // Link. Need to look at the global resources
+                NamingResources global =
+                    ServerFactory.getServer().getGlobalNamingResources();
+                if (global.findEnvironment(rl.getGlobal()) != null) {
+                    if (global.findEnvironment(rl.getGlobal()).getOverride()) {
+                        removeResourceLink(environment.getName());
+                    } else {
+                        return;
+                    }
+                }
             } else {
+                // It exists but it isn't an env or a res link...
                 return;
             }
         }
index 997977d..2b7ad50 100644 (file)
         Fix XSS security vulnerability (CVE-2007-2450) in the Manager and Host
         Manager. Reported by Daiki Fukumori. (markt)
       </fix>
+      <fix>
+        <bug>42547</bug>: Fix NPE when a ResourceLink in context.xml tries to
+        override an env-entry in web.xml.
+      </fix>
     </changelog>
   </subsection>
   <subsection name="Jasper">