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-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org