Author: bmaxwell
Date: 2013-04-16 16:26:42 -0400 (Tue, 16 Apr 2013)
New Revision: 2188
Modified:
tags/JBOSSWEB_7_0_16_FINAL_BZ-952835/java/org/apache/catalina/connector/Connector.java
tags/JBOSSWEB_7_0_16_FINAL_BZ-952835/java/org/apache/catalina/connector/CoyoteAdapter.java
tags/JBOSSWEB_7_0_16_FINAL_BZ-952835/java/org/apache/catalina/core/StandardContext.java
Log:
[BZ-952835] Added fix so allowedHosts are correctly found. Also added changes so that a
copy of the Set of allowedHost is stored as lower case to avoid a bug which was found in
the original fix for this
Modified:
tags/JBOSSWEB_7_0_16_FINAL_BZ-952835/java/org/apache/catalina/connector/Connector.java
===================================================================
---
tags/JBOSSWEB_7_0_16_FINAL_BZ-952835/java/org/apache/catalina/connector/Connector.java 2013-04-16
20:22:00 UTC (rev 2187)
+++
tags/JBOSSWEB_7_0_16_FINAL_BZ-952835/java/org/apache/catalina/connector/Connector.java 2013-04-16
20:26:42 UTC (rev 2188)
@@ -19,6 +19,8 @@
package org.apache.catalina.connector;
import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
import java.util.Set;
import javax.management.MBeanRegistration;
@@ -268,7 +270,7 @@
* Allowed virtual hosts.
*/
protected Set<String> allowedHosts = null;
-
+ protected Set<String> allowedHostsIgnoreCase = new HashSet();
protected static HashMap<String, String> replacements = new HashMap<String,
String>();
static {
@@ -391,8 +393,20 @@
public void setAllowedHosts(Set<String> allowedHosts) {
this.allowedHosts = allowedHosts;
-
+ addAllowedHostsToLowerCaseSet();
}
+
+ private void addAllowedHostsToLowerCaseSet() {
+ Iterator<String> it = allowedHosts.iterator();
+ while (it.hasNext()) {
+ String allowedHost = it.next();
+ allowedHostsIgnoreCase.add(allowedHost.toLowerCase());
+ }
+ }
+
+ public Set<String> getAllowedHostsIgnoreCase() {
+ return allowedHostsIgnoreCase;
+ }
/**
* Is this connector available for processing requests?
Modified:
tags/JBOSSWEB_7_0_16_FINAL_BZ-952835/java/org/apache/catalina/connector/CoyoteAdapter.java
===================================================================
---
tags/JBOSSWEB_7_0_16_FINAL_BZ-952835/java/org/apache/catalina/connector/CoyoteAdapter.java 2013-04-16
20:22:00 UTC (rev 2187)
+++
tags/JBOSSWEB_7_0_16_FINAL_BZ-952835/java/org/apache/catalina/connector/CoyoteAdapter.java 2013-04-16
20:26:42 UTC (rev 2188)
@@ -55,6 +55,7 @@
import org.apache.catalina.Context;
import org.apache.catalina.Globals;
+import org.apache.catalina.Host;
import org.apache.catalina.Manager;
import org.apache.catalina.Session;
import org.apache.catalina.Wrapper;
@@ -542,11 +543,13 @@
res.setMessage("Context not mapped");
return false;
}
- if (connector.getAllowedHosts() != null
- &&
!connector.getAllowedHosts().contains(request.getMappingData().host)) {
- res.setStatus(403);
- res.setMessage("Host access is forbidden through this connector");
- return false;
+ if (connector.getAllowedHosts() != null) {
+ Host host = (Host) request.getMappingData().host;
+ if (!connector.getAllowedHostsIgnoreCase().contains(host.getName())) {
+ res.setStatus(403);
+ res.setMessage("Host access is forbidden through this
connector");
+ return false;
+ }
}
// Filter trace method
Modified:
tags/JBOSSWEB_7_0_16_FINAL_BZ-952835/java/org/apache/catalina/core/StandardContext.java
===================================================================
---
tags/JBOSSWEB_7_0_16_FINAL_BZ-952835/java/org/apache/catalina/core/StandardContext.java 2013-04-16
20:22:00 UTC (rev 2187)
+++
tags/JBOSSWEB_7_0_16_FINAL_BZ-952835/java/org/apache/catalina/core/StandardContext.java 2013-04-16
20:26:42 UTC (rev 2188)
@@ -3341,6 +3341,8 @@
try {
results[i] = (EventListener) instanceManager.newInstance(listeners[i]);
} catch (Throwable t) {
+ System.err.println("[org.apache.catalina.core.StandardContext]
contextListenerStart exception:");
+ t.printStackTrace();
getLogger().error
(sm.getString("standardContext.applicationListener",
listeners[i]), t);
@@ -3392,6 +3394,9 @@
listener.contextInitialized(event);
fireContainerEvent("afterContextInitialized", listener);
} catch (Throwable t) {
+ System.err.println("[org.apache.catalina.core.StandardContext]
contextListenerStart exception:");
+ t.printStackTrace();
+
fireContainerEvent("afterContextInitialized", listener);
getLogger().error
(sm.getString("standardContext.listenerStart",
@@ -3425,6 +3430,9 @@
try {
results[i] = (EventListener) listeners[i];
} catch (Throwable t) {
+ System.err.println("[org.apache.catalina.core.StandardContext] listenerStart
exception:");
+ t.printStackTrace();
+
getLogger().error
(sm.getString("standardContext.applicationListener",
listeners[i]), t);
Show replies by date