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 2018/05/12 17:58:17 UTC

svn commit: r1831486 - in /tomcat/trunk: java/org/apache/tomcat/util/http/parser/HttpParser.java java/org/apache/tomcat/util/http/parser/LocalStrings.properties test/org/apache/tomcat/util/http/parser/TestHttpParserHost.java

Author: markt
Date: Sat May 12 17:58:17 2018
New Revision: 1831486

URL: http://svn.apache.org/viewvc?rev=1831486&view=rev
Log:
Better error message when segment / domain name ends in an invalid state.
Add an additional test case and remove debug code added in previous commit.

Modified:
    tomcat/trunk/java/org/apache/tomcat/util/http/parser/HttpParser.java
    tomcat/trunk/java/org/apache/tomcat/util/http/parser/LocalStrings.properties
    tomcat/trunk/test/org/apache/tomcat/util/http/parser/TestHttpParserHost.java

Modified: tomcat/trunk/java/org/apache/tomcat/util/http/parser/HttpParser.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/http/parser/HttpParser.java?rev=1831486&r1=1831485&r2=1831486&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/http/parser/HttpParser.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/http/parser/HttpParser.java Sat May 12 17:58:17 2018
@@ -901,8 +901,14 @@ public class HttpParser {
                         allowsEnd == AllowsEnd.FIRST && segmentIndex == 0) {
                     return END;
                 } else {
-                    throw new IllegalArgumentException(sm.getString("http.invalidCharacterDomain",
-                            Character.toString((char) c), errorLocation));
+                    String msg;
+                    if (allowsEnd == AllowsEnd.NEVER) {
+                        msg = sm.getString("http.invalidSegmentEndState", this.name());
+                    } else {
+                        // allowsEnd == AllowsEnd.FIRST && segmentIndex > 0
+                        msg = sm.getString("http.invalidEndState", this.name());
+                    }
+                    throw new IllegalArgumentException(msg);
                 }
             } else if (c == '-') {
                 if (allowsHyphen) {

Modified: tomcat/trunk/java/org/apache/tomcat/util/http/parser/LocalStrings.properties
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/http/parser/LocalStrings.properties?rev=1831486&r1=1831485&r2=1831486&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/http/parser/LocalStrings.properties (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/http/parser/LocalStrings.properties Sat May 12 17:58:17 2018
@@ -26,9 +26,11 @@ http.illegalCharacterDomain=The characte
 http.illegalCharacterIpv4=The character [{0}] is never valid in an IPv4 address.
 http.illegalCharacterIpv6=The character [{0}] is never valid in an IPv6 address.
 http.invalidCharacterDomain=The character [{0}] is not valid{1} a domain name.
+http.invalidEndState=The state [{0}] is not valid for the end of a domain name.
 http.invalidHextet=Invalid hextet. A hextet must consist of 4 or less hex characters.
 http.invalidIpv4Location=The IPv6 address contains an embedded IPv4 address at an invalid location.
 http.invalidOctet=Invalid octet [{0}]. The valid range for IPv4 octets is 0 to 255.
+http.invalidSegmentEndState=The state [{0}] is not valid for the end of a segment.
 http.noClosingBracket=The IPv6 address is missing a closing bracket.
 http.noOpeningBracket=The IPv6 address is missing an opening bracket.
 http.singleColonEnd=An IPv6 address may not end with a single ':'.

Modified: tomcat/trunk/test/org/apache/tomcat/util/http/parser/TestHttpParserHost.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/util/http/parser/TestHttpParserHost.java?rev=1831486&r1=1831485&r2=1831486&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/tomcat/util/http/parser/TestHttpParserHost.java (original)
+++ tomcat/trunk/test/org/apache/tomcat/util/http/parser/TestHttpParserHost.java Sat May 12 17:58:17 2018
@@ -112,6 +112,7 @@ public class TestHttpParserHost {
         result.add(new Object[] { TestType.IPv4, "0.0.0.0com", Integer.valueOf(-1), IAE} );
         result.add(new Object[] { TestType.IPv4, "foo.bar.0com", Integer.valueOf(-1), IAE} );
         result.add(new Object[] { TestType.IPv4, "foo.bar.0com:8080", Integer.valueOf(-1), IAE} );
+        result.add(new Object[] { TestType.IPv4, "myapp-t.my-domain.c-om", Integer.valueOf(-1), IAE} );
         // IPv6 - valid
         result.add(new Object[] { TestType.IPv6, "[::1]", Integer.valueOf(-1), null} );
         result.add(new Object[] { TestType.IPv6, "[::1]:8080", Integer.valueOf(5), null} );
@@ -203,7 +204,6 @@ public class TestHttpParserHost {
 
             }
         } catch (Exception e) {
-            e.printStackTrace();
             exceptionClass = e.getClass();
         }
         Assert.assertEquals(input, expectedResult.intValue(), result);



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