mirror of
https://github.com/django/django.git
synced 2024-12-22 09:05:43 +00:00
Fixed #24349 -- Limited domain name labels to 63 characters in EmailValidator
This commit is contained in:
parent
b98dfc2177
commit
2400329508
@ -142,9 +142,8 @@ class EmailValidator(object):
|
|||||||
r'|^"([\001-\010\013\014\016-\037!#-\[\]-\177]|\\[\001-\011\013\014\016-\177])*"$)', # quoted-string
|
r'|^"([\001-\010\013\014\016-\037!#-\[\]-\177]|\\[\001-\011\013\014\016-\177])*"$)', # quoted-string
|
||||||
re.IGNORECASE)
|
re.IGNORECASE)
|
||||||
domain_regex = re.compile(
|
domain_regex = re.compile(
|
||||||
# max length of the domain is 249: 254 (max email length) minus one
|
# max length for domain name labels is 63 characters per RFC 1034
|
||||||
# period, two characters for the TLD, @ sign, & one character before @.
|
r'((?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+)(?:[A-Z0-9-]{2,63}(?<!-))$',
|
||||||
r'(?:[A-Z0-9](?:[A-Z0-9-]{0,247}[A-Z0-9])?\.)+(?:[A-Z]{2,6}|[A-Z0-9-]{2,}(?<!-))$',
|
|
||||||
re.IGNORECASE)
|
re.IGNORECASE)
|
||||||
literal_regex = re.compile(
|
literal_regex = re.compile(
|
||||||
# literal form, ipv4 or ipv6 address (SMTP 4.1.3)
|
# literal form, ipv4 or ipv6 address (SMTP 4.1.3)
|
||||||
|
@ -242,6 +242,9 @@ Validators
|
|||||||
* Added :func:`django.core.validators.int_list_validator` to generate
|
* Added :func:`django.core.validators.int_list_validator` to generate
|
||||||
validators of strings containing integers separated with a custom character.
|
validators of strings containing integers separated with a custom character.
|
||||||
|
|
||||||
|
* :class:`~django.core.validators.EmailValidator` now limits the length of
|
||||||
|
domain name labels to 63 characters per :rfc:`1034`.
|
||||||
|
|
||||||
Backwards incompatible changes in 1.9
|
Backwards incompatible changes in 1.9
|
||||||
=====================================
|
=====================================
|
||||||
|
|
||||||
|
@ -45,7 +45,12 @@ TEST_DATA = [
|
|||||||
(validate_email, 'email@localhost', None),
|
(validate_email, 'email@localhost', None),
|
||||||
(EmailValidator(whitelist=['localdomain']), 'email@localdomain', None),
|
(EmailValidator(whitelist=['localdomain']), 'email@localdomain', None),
|
||||||
(validate_email, '"test@test"@example.com', None),
|
(validate_email, '"test@test"@example.com', None),
|
||||||
|
(validate_email, 'example@atm.%s' % ('a' * 63), None),
|
||||||
|
(validate_email, 'example@%s.atm' % ('a' * 63), None),
|
||||||
|
(validate_email, 'example@%s.%s.atm' % ('a' * 63, 'b' * 10), None),
|
||||||
|
|
||||||
|
(validate_email, 'example@atm.%s' % ('a' * 64), ValidationError),
|
||||||
|
(validate_email, 'example@%s.atm.%s' % ('b' * 64, 'a' * 63), ValidationError),
|
||||||
(validate_email, None, ValidationError),
|
(validate_email, None, ValidationError),
|
||||||
(validate_email, '', ValidationError),
|
(validate_email, '', ValidationError),
|
||||||
(validate_email, 'abc', ValidationError),
|
(validate_email, 'abc', ValidationError),
|
||||||
@ -69,9 +74,9 @@ TEST_DATA = [
|
|||||||
(validate_email, '"\\\011"@here.com', None),
|
(validate_email, '"\\\011"@here.com', None),
|
||||||
(validate_email, '"\\\012"@here.com', ValidationError),
|
(validate_email, '"\\\012"@here.com', ValidationError),
|
||||||
(validate_email, 'trailingdot@shouldfail.com.', ValidationError),
|
(validate_email, 'trailingdot@shouldfail.com.', ValidationError),
|
||||||
# Max length of domain name in email is 249 (see validator for calculation)
|
# Max length of domain name labels is 63 characters per RFC 1034.
|
||||||
(validate_email, 'a@%s.us' % ('a' * 249), None),
|
(validate_email, 'a@%s.us' % ('a' * 63), None),
|
||||||
(validate_email, 'a@%s.us' % ('a' * 250), ValidationError),
|
(validate_email, 'a@%s.us' % ('a' * 64), ValidationError),
|
||||||
|
|
||||||
(validate_slug, 'slug-ok', None),
|
(validate_slug, 'slug-ok', None),
|
||||||
(validate_slug, 'longer-slug-still-ok', None),
|
(validate_slug, 'longer-slug-still-ok', None),
|
||||||
|
Loading…
Reference in New Issue
Block a user