This is an automated email from the ASF dual-hosted git repository. sebb 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 e9bda17 VALIDATOR-467 - URL fails for //path_underscore e9bda17 is described below commit e9bda17e9a27e4e8d1b951854baf838f0075619f Author: Sebb <s...@apache.org> AuthorDate: Fri Jun 19 22:07:58 2020 +0100 VALIDATOR-467 - URL fails for //path_underscore --- src/changes/changes.xml | 5 ++++- .../java/org/apache/commons/validator/routines/UrlValidator.java | 3 ++- .../org/apache/commons/validator/routines/UrlValidatorTest.java | 9 ++++++++- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 89917cc..29a73c2 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -128,7 +128,7 @@ http://commons.apache.org/validator/dependencies.html <action issue="VALIDATOR-461" type="fix" dev="sebb"> Generic .gmbh top level domain is considered invalid </action> - <action issue="VALIDATOR-444" type="fix" dev="sebb"> + <action issue="VALIDATOR-444" type="fix" dev="sebb" due=to="Marin Scholz"> LongValidator: numbers bigger than the maxvalue are Valid </action> <action issue="VALIDATOR-416" type="fix" dev="sebb"> @@ -137,6 +137,9 @@ http://commons.apache.org/validator/dependencies.html <action issue="VALIDATOR-446" type="add" dev="sebb" due-to="Alex"> ISSN Validator extract ISSN from EAN-13 </action> + <action issue="VALIDATOR-467" type="fix" dev="sebb" due-to="Ivan Larionov"> + URL validator fails if path starts with double slash and has underscores + </action> </release> <release version="1.6" date="2017-02-21" description=" diff --git a/src/main/java/org/apache/commons/validator/routines/UrlValidator.java b/src/main/java/org/apache/commons/validator/routines/UrlValidator.java index 312c8e8..8860a14 100644 --- a/src/main/java/org/apache/commons/validator/routines/UrlValidator.java +++ b/src/main/java/org/apache/commons/validator/routines/UrlValidator.java @@ -450,7 +450,8 @@ public class UrlValidator implements Serializable { } try { - URI uri = new URI(null,null,path,null); + // Don't omit host otherwise leading path may be taken as host if it starts with // + URI uri = new URI(null,"localhost",path,null); String norm = uri.normalize().getPath(); if (norm.startsWith("/../") // Trying to go via the parent dir || norm.equals("/..")) { // Trying to go to the parent dir 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 9e48e07..7a40e3c 100644 --- a/src/test/java/org/apache/commons/validator/routines/UrlValidatorTest.java +++ b/src/test/java/org/apache/commons/validator/routines/UrlValidatorTest.java @@ -498,7 +498,14 @@ protected void setUp() { assertTrue(validator.isValid("http://example.com/serach?address=Main+Avenue")); } - //-------------------- Test data for creating a composite URL + public void testValidator467() { + UrlValidator validator = new UrlValidator(UrlValidator.ALLOW_2_SLASHES); + assertTrue(validator.isValid("https://example.com/some_path/path/")); + assertTrue(validator.isValid("https://example.com//somepath/path/")); + assertTrue(validator.isValid("https://example.com//some_path/path/")); + } + + //-------------------- Test data for creating a composite URL /** * The data given below approximates the 4 parts of a URL * <scheme>://<authority><path>?<query> except that the port number