diff --git a/src/Parse.php b/src/Parse.php index 0fb3a1b..6f252ef 100644 --- a/src/Parse.php +++ b/src/Parse.php @@ -879,8 +879,8 @@ protected function validateDomainName(string $domain, string $encoding = 'UTF-8' $parts = mb_split('\\.', $domain); mb_regex_encoding($origEncoding); foreach ($parts as $part) { - if (mb_strlen($part, $encoding) > $this->options->getMaxDomainLabelLength()) { - return ['valid' => false, 'reason' => "Domain name part '{$part}' too long"]; + if (strlen($part) > $this->options->getMaxDomainLabelLength()) { + return ['valid' => false, 'reason' => "Domain name part '{$part}' must be less than " . $this->options->getMaxDomainLabelLength() . " octets"]; } if (!preg_match('/^[a-zA-Z0-9\-]+$/', $part)) { return ['valid' => false, 'reason' => "Domain name '{$domain}' can only contain letters a through z, numbers 0 through 9 and hyphen. The part '{$part}' contains characters outside of that range."]; diff --git a/tests/testspec.yml b/tests/testspec.yml index 31e3411..3359a8a 100644 --- a/tests/testspec.yml +++ b/tests/testspec.yml @@ -1960,7 +1960,7 @@ domain: 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.com' ip: '' invalid: true - invalid_reason: 'Domain invalid: Domain name part ''aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'' too long' + invalid_reason: 'Domain invalid: Domain name part ''aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'' must be less than 63 octets' - emails: 'test@aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.example.com' multiple: false @@ -1976,7 +1976,7 @@ domain: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.example.com ip: '' invalid: true - invalid_reason: 'Domain invalid: Domain name part ''aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'' too long' + invalid_reason: 'Domain invalid: Domain name part ''aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'' must be less than 63 octets' - emails: 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@example.com' multiple: false @@ -2044,7 +2044,41 @@ domain: aaaaaaaaa.example.com ip: '' invalid: true - invalid_reason: 'Domain invalid: Domain name part ''aaaaaaaaa'' too long' + invalid_reason: 'Domain invalid: Domain name part ''aaaaaaaaa'' must be less than 8 octets' +- + emails: 'test@example.com' + multiple: false + max_total_length: 10 + result: + address: '' + simple_address: '' + original_address: 'test@example.com' + name: '' + name_parsed: '' + local_part: test + local_part_parsed: test + domain_part: example.com + domain: example.com + ip: '' + invalid: true + invalid_reason: 'Email addresses can not be greater than 10 octets per RFC erratum 1690' +- + emails: 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@example.com' + multiple: false + use_relaxed_limits: true + result: + address: 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@example.com' + simple_address: 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@example.com' + original_address: 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@example.com' + name: '' + name_parsed: '' + local_part: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + local_part_parsed: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + domain_part: example.com + domain: example.com + ip: '' + invalid: false + invalid_reason: null - emails: 'test@example.com' multiple: false