Author: markt
Date: Mon May 14 13:45:05 2018
New Revision: 1831568

URL: http://svn.apache.org/viewvc?rev=1831568&view=rev
Log:
Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=62371
Improve logging of Host validation failures.

Modified:
    tomcat/trunk/java/org/apache/coyote/AbstractProcessor.java
    tomcat/trunk/java/org/apache/coyote/LocalStrings.properties
    tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java
    tomcat/trunk/webapps/docs/changelog.xml

Modified: tomcat/trunk/java/org/apache/coyote/AbstractProcessor.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/AbstractProcessor.java?rev=1831568&r1=1831567&r2=1831568&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/AbstractProcessor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/AbstractProcessor.java Mon May 14 
13:45:05 2018
@@ -29,6 +29,7 @@ import org.apache.tomcat.util.ExceptionU
 import org.apache.tomcat.util.buf.ByteChunk;
 import org.apache.tomcat.util.buf.MessageBytes;
 import org.apache.tomcat.util.http.parser.Host;
+import org.apache.tomcat.util.log.UserDataHelper;
 import org.apache.tomcat.util.net.AbstractEndpoint.Handler.SocketState;
 import org.apache.tomcat.util.net.DispatchType;
 import org.apache.tomcat.util.net.SSLSupport;
@@ -61,6 +62,7 @@ public abstract class AbstractProcessor
      */
     private ErrorState errorState = ErrorState.NONE;
 
+    protected final UserDataHelper userDataHelper;
 
     public AbstractProcessor(Adapter adapter) {
         this(adapter, new Request(), new Response());
@@ -75,6 +77,7 @@ public abstract class AbstractProcessor
         response.setHook(this);
         request.setResponse(response);
         request.setHook(this);
+        userDataHelper = new UserDataHelper(getLog());
     }
 
     /**
@@ -294,8 +297,23 @@ public abstract class AbstractProcessor
 
         } catch (IllegalArgumentException e) {
             // IllegalArgumentException indicates that the host name is invalid
+            UserDataHelper.Mode logMode = userDataHelper.getNextMode();
+            if (logMode != null) {
+                String message = sm.getString("abstractProcessor.hostInvalid", 
valueMB.toString());
+                switch (logMode) {
+                    case INFO_THEN_DEBUG:
+                        message += 
sm.getString("abstractProcessor.fallToDebug");
+                        //$FALL-THROUGH$
+                    case INFO:
+                        getLog().info(message, e);
+                        break;
+                    case DEBUG:
+                        getLog().debug(message, e);
+                }
+            }
+
             response.setStatus(400);
-            setErrorState(ErrorState.CLOSE_CLEAN, null);
+            setErrorState(ErrorState.CLOSE_CLEAN, e);
         }
     }
 

Modified: tomcat/trunk/java/org/apache/coyote/LocalStrings.properties
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/LocalStrings.properties?rev=1831568&r1=1831567&r2=1831568&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/LocalStrings.properties (original)
+++ tomcat/trunk/java/org/apache/coyote/LocalStrings.properties Mon May 14 
13:45:05 2018
@@ -23,7 +23,9 @@ abstractConnectionHandler.socketexceptio
 abstractConnectionHandler.negotiatedProcessor.fail=Failed to create Processor 
for negotiated protocol [{0}]
 abstractConnectionHandler.upgradeCreate=Created upgrade processor [{0}] for 
socket wrapper [{1}]
 
+abstractProcessor.fallToDebug=\n Note: further occurrences of request parsing 
errors will be logged at DEBUG level.
 abstractProcessor.httpupgrade.notsupported=HTTP upgrade is not supported by 
this protocol
+abstractProcessor.hostInvalid=The host [{0}] is not valid
 abstractProcessor.noExecute=Unable to transfer processing to a container 
thread because this Processor is not currently associated with a SocketWrapper
 abstractProcessor.nonContainerThreadError=An error occurred in processing 
while on a non-container thread. The connection will be closed immediately
 abstractProcessor.pushrequest.notsupported=Server push requests are not 
supported by this protocol

Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java?rev=1831568&r1=1831567&r2=1831568&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java Mon May 14 
13:45:05 2018
@@ -73,8 +73,6 @@ public class Http11Processor extends Abs
 
     private final AbstractHttp11Protocol<?> protocol;
 
-    private final UserDataHelper userDataHelper;
-
     /**
      * Input.
      */
@@ -151,8 +149,6 @@ public class Http11Processor extends Abs
         super(adapter);
         this.protocol = protocol;
 
-        userDataHelper = new UserDataHelper(log);
-
         httpParser = new HttpParser(protocol.getRelaxedPathChars(),
                 protocol.getRelaxedQueryChars());
 

Modified: tomcat/trunk/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1831568&r1=1831567&r2=1831568&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Mon May 14 13:45:05 2018
@@ -109,6 +109,9 @@
         Relax Host validation by removing the requirement that the final
         component of a FQDN must be alphabetic. (markt)
       </fix>
+      <fix>
+        <bug>62371</bug>: Improve logging of Host validation failures. (markt)
+      </fix>
     </changelog>
   </subsection>
   <subsection name="Jasper">



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to