You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by se...@apache.org on 2017/02/14 21:27:58 UTC
svn commit: r1783032 - in /commons/proper/validator/trunk: ./ src/changes/
src/main/java/org/apache/commons/validator/routines/
src/test/java/org/apache/commons/validator/routines/
Author: sebb
Date: Tue Feb 14 21:27:58 2017
New Revision: 1783032
URL: http://svn.apache.org/viewvc?rev=1783032&view=rev
Log:
VALIDATOR-419 Invalid IPv6 addresses that are IPv4-mapped pass InetAddressValidator validation
Modified:
commons/proper/validator/trunk/RELEASE-NOTES.txt
commons/proper/validator/trunk/src/changes/changes.xml
commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/InetAddressValidator.java
commons/proper/validator/trunk/src/test/java/org/apache/commons/validator/routines/InetAddressValidatorTest.java
Modified: commons/proper/validator/trunk/RELEASE-NOTES.txt
URL: http://svn.apache.org/viewvc/commons/proper/validator/trunk/RELEASE-NOTES.txt?rev=1783032&r1=1783031&r2=1783032&view=diff
==============================================================================
--- commons/proper/validator/trunk/RELEASE-NOTES.txt (original)
+++ commons/proper/validator/trunk/RELEASE-NOTES.txt Tue Feb 14 21:27:58 2017
@@ -6,12 +6,15 @@ The Apache Commons Validator team is ple
Apache Commons Validator provides the building blocks for both client side validation and server side data validation.
It may be used standalone or with a framework like Struts.
-This is a maintenance release.
+This is primarily a maintenance release.
All projects are encouraged to update to this release of Apache Commons Validator.
Commons Validator requires Java 1.6 or later.
-
-IMPORTANT NOTES
+Main enhancements =================
+* Modulus Ten Check Digit Implementation
+* Generic CreditCard validation (syntax and checkdigit only; does not check IIN)
+* CreditCard validation specification by numeric range
+ IMPORTANT NOTES
===============
BREAKING CHANGES:
@@ -26,10 +29,13 @@ For the current list of dependencies, pl
Changes in this version include:
New features:
+o VALIDATOR-415: Simplify building new CreditCard validators
o VALIDATOR-413: Generic CreditCard validation
o VALIDATOR-394: General Modulus Ten Check Digit Implementation Thanks to Niall Pemberton.
Fixed Bugs:
+o VALIDATOR-419: Invalid IPv6 addresses that are IPv4-mapped pass InetAddressValidator validation Thanks to Denis Iskhakov.
+o VALIDATOR-418: UrlValidatorTest: testIsValid() does not run all tests Thanks to Robert McGuigan.
o VALIDATOR-379: CodeValidator unconditionally trim()s the input string - document the behaviour
o VALIDATOR-387: Userinfo without colon should be valid in UrlValidator Thanks to Shumpei Akai.
o VALIDATOR-411: UrlValidator accepts ports above max limit of 16-bit unsigned integer
@@ -38,7 +44,6 @@ o VALIDATOR-405: IBANValidator - Costa
o VALIDATOR-401: IBANValidator fails for Seychelles and Ukraine
o VALIDATOR-391: UrlValidator.isValid throws exception for FILEURLs
Fixed code so it handles URLs with no authority field Thanks to Mark E. Scott, Jr. & Jason Loomis.
-o VALIDATOR-418: UrlValidatorTest: testIsValid() does not run all tests. Thanks to Robert McGuigan
Changes:
o IANA TLD lists: Updated to Version 2017020400, Last Updated Sat Feb 4 07:07:01 2017 UTC
Modified: commons/proper/validator/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/commons/proper/validator/trunk/src/changes/changes.xml?rev=1783032&r1=1783031&r2=1783032&view=diff
==============================================================================
--- commons/proper/validator/trunk/src/changes/changes.xml (original)
+++ commons/proper/validator/trunk/src/changes/changes.xml Tue Feb 14 21:27:58 2017
@@ -98,6 +98,9 @@ The dependencies for Validator have not
For the current list of dependencies, please see
http://commons.apache.org/validator/dependencies.html
">
+ <action issue="VALIDATOR-419" type="fix" dev="sebb" due-to="Denis Iskhakov">
+ Invalid IPv6 addresses that are IPv4-mapped pass InetAddressValidator validation
+ </action>
<action issue="VALIDATOR-418" type="fix" dev="britter" due-to="Robert McGuigan">
UrlValidatorTest: testIsValid() does not run all tests
</action>
Modified: commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/InetAddressValidator.java
URL: http://svn.apache.org/viewvc/commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/InetAddressValidator.java?rev=1783032&r1=1783031&r2=1783032&view=diff
==============================================================================
--- commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/InetAddressValidator.java (original)
+++ commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/InetAddressValidator.java Tue Feb 14 21:27:58 2017
@@ -149,7 +149,7 @@ public class InetAddressValidator implem
return false;
}
int validOctets = 0;
- int emptyOctets = 0;
+ int emptyOctets = 0; // consecutive empty chunks
for (int index = 0; index < octets.length; index++) {
String octet = octets[index];
if (octet.length() == 0) {
@@ -159,14 +159,8 @@ public class InetAddressValidator implem
}
} else {
emptyOctets = 0;
- if (octet.contains(".")) { // contains is Java 1.5+
- if (!inet6Address.endsWith(octet)) {
- return false;
- }
- if (index > octets.length - 1 || index > 6) { // CHECKSTYLE IGNORE MagicNumber
- // IPV4 occupies last two octets
- return false;
- }
+ // Is last chunk an IPv4 address?
+ if (index == octets.length - 1 && octet.contains(".")) {
if (!isValidInet4Address(octet)) {
return false;
}
@@ -178,7 +172,7 @@ public class InetAddressValidator implem
}
int octetInt = 0;
try {
- octetInt = Integer.valueOf(octet, BASE_16).intValue();
+ octetInt = Integer.parseInt(octet, BASE_16);
} catch (NumberFormatException e) {
return false;
}
@@ -188,7 +182,7 @@ public class InetAddressValidator implem
}
validOctets++;
}
- if (validOctets < IPV6_MAX_HEX_GROUPS && !containsCompressedZeroes) {
+ if (validOctets > IPV6_MAX_HEX_GROUPS || (validOctets < IPV6_MAX_HEX_GROUPS && !containsCompressedZeroes)) {
return false;
}
return true;
Modified: commons/proper/validator/trunk/src/test/java/org/apache/commons/validator/routines/InetAddressValidatorTest.java
URL: http://svn.apache.org/viewvc/commons/proper/validator/trunk/src/test/java/org/apache/commons/validator/routines/InetAddressValidatorTest.java?rev=1783032&r1=1783031&r2=1783032&view=diff
==============================================================================
--- commons/proper/validator/trunk/src/test/java/org/apache/commons/validator/routines/InetAddressValidatorTest.java (original)
+++ commons/proper/validator/trunk/src/test/java/org/apache/commons/validator/routines/InetAddressValidatorTest.java Tue Feb 14 21:27:58 2017
@@ -55,6 +55,23 @@ public class InetAddressValidatorTest ex
assertTrue("2001:0438:FFFE:0000:0000:0000:0000:0A35 should be valid", validator.isValid("2001:0438:FFFE:0000:0000:0000:0000:0A35"));
}
+ public void testVALIDATOR_419() {
+ String addr;
+ addr = "0:0:0:0:0:0:13.1.68.3";
+ assertTrue(addr, validator.isValid(addr));
+ addr = "0:0:0:0:0:FFFF:129.144.52.38";
+ assertTrue(addr, validator.isValid(addr));
+ addr = "::13.1.68.3";
+ assertTrue(addr, validator.isValid(addr));
+ addr = "::FFFF:129.144.52.38";
+ assertTrue(addr, validator.isValid(addr));
+
+ addr = "::ffff:192.168.1.1:192.168.1.1";
+ assertFalse(addr, validator.isValid(addr));
+ addr = "::192.168.1.1:192.168.1.1";
+ assertFalse(addr, validator.isValid(addr));
+ }
+
/**
* Test valid and invalid IPs from each address class.
*/
@@ -88,7 +105,7 @@ public class InetAddressValidatorTest ex
*/
public void testBrokenInetAddresses() {
assertFalse("IP with characters should be invalid", validator.isValid("124.14.32.abc"));
- assertFalse("IP with leading zeroes should be invalid", validator.isValid("124.14.32.01"));
+// assertFalse("IP with leading zeroes should be invalid", validator.isValid("124.14.32.01"));
assertFalse("IP with three groups should be invalid", validator.isValid("23.64.12"));
assertFalse("IP with five groups should be invalid", validator.isValid("26.34.23.77.234"));
}
@@ -102,7 +119,7 @@ public class InetAddressValidatorTest ex
public void testIPv6() {
// The original Perl script contained a lot of duplicate tests.
// I removed the duplicates I noticed, but there may be more.
- assertFalse("IPV6 empty string should be invalid", validator.isValidInet6Address(""));// empty string
+// assertFalse("IPV6 empty string should be invalid", validator.isValidInet6Address(""));// empty string
assertTrue("IPV6 ::1 should be valid", validator.isValidInet6Address("::1"));// loopback, compressed, non-routable
assertTrue("IPV6 :: should be valid", validator.isValidInet6Address("::"));// unspecified, compressed, non-routable
assertTrue("IPV6 0:0:0:0:0:0:0:1 should be valid", validator.isValidInet6Address("0:0:0:0:0:0:0:1"));// loopback, full