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 a3c5da2 VALIDATOR-302/449 Email leading & trailing spaces a3c5da2 is described below commit a3c5da2d0e53003885a6af4875e40565a07b05a4 Author: Sebb <s...@apache.org> AuthorDate: Sat Jun 20 20:52:15 2020 +0100 VALIDATOR-302/449 Email leading & trailing spaces --- src/changes/changes.xml | 6 ++++++ .../apache/commons/validator/routines/EmailValidator.java | 4 ++-- src/test/java/org/apache/commons/validator/EmailTest.java | 6 ++++-- .../commons/validator/routines/EmailValidatorTest.java | 14 +++++++++++--- 4 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/changes/changes.xml b/src/changes/changes.xml index a007282..a999caa 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -143,6 +143,12 @@ http://commons.apache.org/validator/dependencies.html <action issue="VALIDATOR-464" type="fix" dev="sebb" due-to="Sebastian Choina"> UrlValidator says "file://bad ^ domain.com/label/test" is valid </action> + <action issue="VALIDATOR-449" type="fix" dev="sebb" due-to="Frederic Boutin"> + Leading and trailing spaces in EmailValidator should not be valid + </action> + <action issue="VALIDATOR-302" type="fix" dev="sebb" due-to="Guido Zockoll"> + EMailValidator: Addresses with leading spaces must not be accepted + </action> </release> <release version="1.6" date="2017-02-21" description=" diff --git a/src/main/java/org/apache/commons/validator/routines/EmailValidator.java b/src/main/java/org/apache/commons/validator/routines/EmailValidator.java index 91d56cf..51337d9 100644 --- a/src/main/java/org/apache/commons/validator/routines/EmailValidator.java +++ b/src/main/java/org/apache/commons/validator/routines/EmailValidator.java @@ -42,9 +42,9 @@ public class EmailValidator implements Serializable { private static final String QUOTED_USER = "(\"(\\\\\"|[^\"])*\")"; private static final String WORD = "((" + VALID_CHARS + "|')+|" + QUOTED_USER + ")"; - private static final String EMAIL_REGEX = "^\\s*?(.+)@(.+?)\\s*$"; + private static final String EMAIL_REGEX = "^(.+)@(\\S+)$"; private static final String IP_DOMAIN_REGEX = "^\\[(.*)\\]$"; - private static final String USER_REGEX = "^\\s*" + WORD + "(\\." + WORD + ")*$"; + private static final String USER_REGEX = "^" + WORD + "(\\." + WORD + ")*$"; private static final Pattern EMAIL_PATTERN = Pattern.compile(EMAIL_REGEX); private static final Pattern IP_DOMAIN_PATTERN = Pattern.compile(IP_DOMAIN_REGEX); diff --git a/src/test/java/org/apache/commons/validator/EmailTest.java b/src/test/java/org/apache/commons/validator/EmailTest.java index 09667e2..1216bd8 100644 --- a/src/test/java/org/apache/commons/validator/EmailTest.java +++ b/src/test/java/org/apache/commons/validator/EmailTest.java @@ -190,13 +190,15 @@ protected void setUp() throws IOException, SAXException { info.setValue("joeblow@ apache.org"); valueTest(info, false); info.setValue(" joeb...@apache.org"); - valueTest(info, true); + valueTest(info, false); info.setValue("joeb...@apache.org "); - valueTest(info, true); + valueTest(info, false); info.setValue("joe b...@apache.org "); valueTest(info, false); info.setValue("joeblow@apa che.org "); valueTest(info, false); + info.setValue("\"joe blow\"@apache.org"); + valueTest(info, true); } diff --git a/src/test/java/org/apache/commons/validator/routines/EmailValidatorTest.java b/src/test/java/org/apache/commons/validator/routines/EmailValidatorTest.java index 8482aa5..0df9202 100644 --- a/src/test/java/org/apache/commons/validator/routines/EmailValidatorTest.java +++ b/src/test/java/org/apache/commons/validator/routines/EmailValidatorTest.java @@ -178,18 +178,24 @@ protected void tearDown() { * Tests the email validation with spaces. */ public void testEmailWithSpaces() { - assertFalse(validator.isValid("joeblow @apache.org")); // TODO - this should be valid? + assertFalse(validator.isValid("joeblow @apache.org")); assertFalse(validator.isValid("joeblow@ apache.org")); - assertTrue(validator.isValid(" joeb...@apache.org")); // TODO - this should be valid? + assertFalse(validator.isValid(" joeb...@apache.org")); - assertTrue(validator.isValid("joeb...@apache.org ")); + assertFalse(validator.isValid("joeb...@apache.org ")); assertFalse(validator.isValid("joe b...@apache.org ")); assertFalse(validator.isValid("joeblow@apa che.org ")); + assertTrue(validator.isValid("\"joeblow \"@apache.org")); + + assertTrue(validator.isValid("\" joeblow\"@apache.org")); + + assertTrue(validator.isValid("\" joe blow \"@apache.org")); + } /** @@ -345,6 +351,8 @@ protected void tearDown() { assertTrue(validator.isValid("\"joe+\"@apache.org")); + assertTrue(validator.isValid("\"joe@\"@apache.org")); + assertTrue(validator.isValid("\"joe!\"@apache.org")); assertTrue(validator.isValid("\"joe*\"@apache.org"));