Author: markt Date: Fri Jan 7 18:28:40 2011 New Revision: 1056445 URL: http://svn.apache.org/viewvc?rev=1056445&view=rev Log: Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=50453 Correctly handle multiple X-Forwarded-For headers in RemoteIpValve Patch provided by Jim Riggs
Modified: tomcat/tc6.0.x/trunk/STATUS.txt tomcat/tc6.0.x/trunk/java/org/apache/catalina/valves/RemoteIpValve.java tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml Modified: tomcat/tc6.0.x/trunk/STATUS.txt URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/STATUS.txt?rev=1056445&r1=1056444&r2=1056445&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/STATUS.txt (original) +++ tomcat/tc6.0.x/trunk/STATUS.txt Fri Jan 7 18:28:40 2011 @@ -201,12 +201,6 @@ PATCHES PROPOSED TO BACKPORT: +1: fhanik - fix indentation -1: -* Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=50453 - Correct handle multiple X-Forwarded-For headers in RemoteIpValve - http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/valves/RemoteIpValve.java?r1=1055482&r2=1055481&pathrev=1055482 - +1: markt, fhanik, funkman - -1: - * Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=50550 Requests for a newly created directory using MKCOL should not result in a 404 http://svn.apache.org/viewvc?rev=1055975&view=rev Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/valves/RemoteIpValve.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/valves/RemoteIpValve.java?rev=1056445&r1=1056444&r2=1056445&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/catalina/valves/RemoteIpValve.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/valves/RemoteIpValve.java Fri Jan 7 18:28:40 2011 @@ -19,6 +19,7 @@ package org.apache.catalina.valves; import java.io.IOException; import java.util.ArrayList; +import java.util.Enumeration; import java.util.Iterator; import java.util.LinkedList; import java.util.List; @@ -558,8 +559,17 @@ public class RemoteIpValve extends Valve String remoteIp = null; // In java 6, proxiesHeaderValue should be declared as a java.util.Deque LinkedList<String> proxiesHeaderValue = new LinkedList<String>(); + StringBuffer concatRemoteIpHeaderValue = new StringBuffer(); - String[] remoteIpHeaderValue = commaDelimitedListToStringArray(request.getHeader(remoteIpHeader)); + for (Enumeration<String> e = request.getHeaders(remoteIpHeader); e.hasMoreElements();) { + if (concatRemoteIpHeaderValue.length() > 0) { + concatRemoteIpHeaderValue.append(", "); + } + + concatRemoteIpHeaderValue.append(e.nextElement()); + } + + String[] remoteIpHeaderValue = commaDelimitedListToStringArray(concatRemoteIpHeaderValue.toString()); int idx; // loop on remoteIpHeaderValue to find the first trusted remote ip and to build the proxies chain for (idx = remoteIpHeaderValue.length - 1; idx >= 0; idx--) { Modified: tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml?rev=1056445&r1=1056444&r2=1056445&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml (original) +++ tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml Fri Jan 7 18:28:40 2011 @@ -185,6 +185,10 @@ exceptions. (markt) </add> <fix> + <bug>50453</bug>: Correctly handle multiple <code>X-Forwarded-For</code> + headers in the RemoteIpValve. Patch provided by Jim Riggs. (markt) + </fix> + <fix> <bug>50459</bug>: Fix thread/classloader binding issues in StandardContext. (slaurent) </fix> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org