diff --git a/src/Symfony/Component/Validator/Constraints/EmailValidator.php b/src/Symfony/Component/Validator/Constraints/EmailValidator.php index d6b6a9021c..cf334e5e51 100644 --- a/src/Symfony/Component/Validator/Constraints/EmailValidator.php +++ b/src/Symfony/Component/Validator/Constraints/EmailValidator.php @@ -138,7 +138,7 @@ class EmailValidator extends ConstraintValidator */ private function checkMX($host) { - if (null === $host || '' === $host) { + if ('' === $host) { return false; } @@ -154,6 +154,10 @@ class EmailValidator extends ConstraintValidator */ private function checkHost($host) { + if ('' === $host) { + return false; + } + return $this->checkMX($host) || (checkdnsrr($host, 'A') || checkdnsrr($host, 'AAAA')); } } diff --git a/src/Symfony/Component/Validator/Constraints/UrlValidator.php b/src/Symfony/Component/Validator/Constraints/UrlValidator.php index db7244f40c..7e3a074e6c 100644 --- a/src/Symfony/Component/Validator/Constraints/UrlValidator.php +++ b/src/Symfony/Component/Validator/Constraints/UrlValidator.php @@ -80,7 +80,7 @@ class UrlValidator extends ConstraintValidator if ($constraint->checkDNS) { $host = parse_url($value, PHP_URL_HOST); - if (!checkdnsrr($host, 'ANY')) { + if ('' === $host || !checkdnsrr($host, 'ANY')) { if ($this->context instanceof ExecutionContextInterface) { $this->context->buildViolation($constraint->dnsMessage) ->setParameter('{{ value }}', $this->formatValue($host)) diff --git a/src/Symfony/Component/Validator/Tests/Constraints/EmailValidatorTest.php b/src/Symfony/Component/Validator/Tests/Constraints/EmailValidatorTest.php index cfa0e99c92..f623129867 100644 --- a/src/Symfony/Component/Validator/Tests/Constraints/EmailValidatorTest.php +++ b/src/Symfony/Component/Validator/Tests/Constraints/EmailValidatorTest.php @@ -159,4 +159,10 @@ class EmailValidatorTest extends AbstractConstraintValidatorTest $this->assertNoViolation(); } + + public function testEmptyHostReturnsFalse() + { + $this->assertFalse($this->validator->checkMX('')); + $this->assertFalse($this->validator->checkHost('')); + } } diff --git a/src/Symfony/Component/Validator/Tests/Constraints/UrlValidatorTest.php b/src/Symfony/Component/Validator/Tests/Constraints/UrlValidatorTest.php index 39f1708cf1..34ef99e018 100644 --- a/src/Symfony/Component/Validator/Tests/Constraints/UrlValidatorTest.php +++ b/src/Symfony/Component/Validator/Tests/Constraints/UrlValidatorTest.php @@ -171,6 +171,7 @@ class UrlValidatorTest extends AbstractConstraintValidatorTest array('http://example.com/exploit.html?'), array('http://example.com/exploit.html?hel lo'), array('http://example.com/exploit.html?not_a%hex'), + array('http:/.com'), ); }