This is an automated email from the ASF dual-hosted git repository.
garydgregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-validator.git
The following commit(s) were added to refs/heads/master by this push:
new 6e155cd1 Accept IPv4-embedded IPv6 addresses in UrlValidator (#405).
6e155cd1 is described below
commit 6e155cd1f0ab02c0db567907f46cceecdf91aef4
Author: Gary Gregory <[email protected]>
AuthorDate: Sat Jun 20 16:15:38 2026 +0000
Accept IPv4-embedded IPv6 addresses in UrlValidator (#405).
Sort members.
---
src/changes/changes.xml | 1 +
.../validator/routines/UrlValidatorTest.java | 24 +++++++++++-----------
2 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 5d50df7f..1262c5ba 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -87,6 +87,7 @@ The <action> type attribute can be add,update,fix,remove.
<action type="fix" dev="ggregory" due-to="sahvx655-wq, Gary
Gregory">Compare Exact value in BigDecimalValidator min/max range checks
(#401).</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory,
sahvx655-wq">Compare exact values in BigInteger and BigDecimal Number range
checks (#404).</action>
<action type="fix" dev="ggregory" due-to="sahvx655-wq, Gary
Gregory">Reject non-ASCII hex digits in isValidInet6Address (#403).</action>
+ <action type="fix" dev="ggregory" due-to="sahvx655-wq, Gary
Gregory">Accept IPv4-embedded IPv6 addresses in UrlValidator (#405).</action>
<!-- ADD -->
<action type="add" dev="ggregory" due-to="Gary Gregory">Add and use
CheckDigitException.CheckDigitException(String, Object...) (#389).</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add and use
ValidatorException.ValidatorException(Throwable). Call sites that previously
called new ValidatorException(Throwable#getMessage()) now preserve that
exception (#390).</action>
diff --git
a/src/test/java/org/apache/commons/validator/routines/UrlValidatorTest.java
b/src/test/java/org/apache/commons/validator/routines/UrlValidatorTest.java
index b229e51f..63d5f169 100644
--- a/src/test/java/org/apache/commons/validator/routines/UrlValidatorTest.java
+++ b/src/test/java/org/apache/commons/validator/routines/UrlValidatorTest.java
@@ -161,6 +161,18 @@ public class UrlValidatorTest {
assertTrue(urlValidator.isValid("http://apache.org/a/b/c#frag"));
}
+ @Test
+ void testIpv6EmbeddedIpv4() {
+ final UrlValidator urlValidator = new UrlValidator();
+ // ::FFFF: in upper case already worked (testValidator452); the
lower-case mapped form
+ // and the other IPv4-embedded notations must validate the same way.
+
assertTrue(urlValidator.isValid("http://[::ffff:129.144.52.38]:80/index.html"));
+ assertTrue(urlValidator.isValid("http://[::1.2.3.4]/"));
+ assertTrue(urlValidator.isValid("http://[2001:db8::1.2.3.4]/"));
+ // an embedded IPv4 part with an out-of-range octet is still rejected
+ assertFalse(urlValidator.isValid("http://[::ffff:129.144.52.999]/"));
+ }
+
@ParameterizedTest
// @formatter:off
@ValueSource(strings = {
@@ -668,18 +680,6 @@ public class UrlValidatorTest {
assertTrue(urlValidator.isValid("http://[::FFFF:129.144.52.38]:80/index.html"));
}
- @Test
- void testIpv6EmbeddedIpv4() {
- final UrlValidator urlValidator = new UrlValidator();
- // ::FFFF: in upper case already worked (testValidator452); the
lower-case mapped form
- // and the other IPv4-embedded notations must validate the same way.
-
assertTrue(urlValidator.isValid("http://[::ffff:129.144.52.38]:80/index.html"));
- assertTrue(urlValidator.isValid("http://[::1.2.3.4]/"));
- assertTrue(urlValidator.isValid("http://[2001:db8::1.2.3.4]/"));
- // an embedded IPv4 part with an out-of-range octet is still rejected
- assertFalse(urlValidator.isValid("http://[::ffff:129.144.52.999]/"));
- }
-
@Test
void testValidator464() {
final String[] schemes = { "file" };