mirror of
https://github.com/django/django.git
synced 2024-12-22 17:16:24 +00:00
Fixed #35845 -- Updated DomainNameValidator to require entire string to be a valid domain name.
Bug in 4971a9afe5
.
Thank you to kazet for the report and Claude Paroz for the review.
This commit is contained in:
parent
65f3cfce59
commit
99dcc59237
@ -101,13 +101,16 @@ class DomainNameValidator(RegexValidator):
|
|||||||
|
|
||||||
if self.accept_idna:
|
if self.accept_idna:
|
||||||
self.regex = _lazy_re_compile(
|
self.regex = _lazy_re_compile(
|
||||||
self.hostname_re + self.domain_re + self.tld_re, re.IGNORECASE
|
r"^" + self.hostname_re + self.domain_re + self.tld_re + r"$",
|
||||||
|
re.IGNORECASE,
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
self.regex = _lazy_re_compile(
|
self.regex = _lazy_re_compile(
|
||||||
self.ascii_only_hostname_re
|
r"^"
|
||||||
|
+ self.ascii_only_hostname_re
|
||||||
+ self.ascii_only_domain_re
|
+ self.ascii_only_domain_re
|
||||||
+ self.ascii_only_tld_re,
|
+ self.ascii_only_tld_re
|
||||||
|
+ r"$",
|
||||||
re.IGNORECASE,
|
re.IGNORECASE,
|
||||||
)
|
)
|
||||||
super().__init__(**kwargs)
|
super().__init__(**kwargs)
|
||||||
|
@ -10,4 +10,7 @@ Django 5.1.3 fixes several bugs in 5.1.2 and adds compatibility with Python
|
|||||||
Bugfixes
|
Bugfixes
|
||||||
========
|
========
|
||||||
|
|
||||||
* ...
|
* Fixed a bug in Django 5.1 where
|
||||||
|
:class:`~django.core.validators.DomainNameValidator` accepted any input value
|
||||||
|
that contained a valid domain name, rather than only input values that were a
|
||||||
|
valid domain name (:ticket:`35845`).
|
||||||
|
@ -635,8 +635,8 @@ TEST_DATA = [
|
|||||||
(validate_domain_name, "python-python.com", None),
|
(validate_domain_name, "python-python.com", None),
|
||||||
(validate_domain_name, "python.name.uk", None),
|
(validate_domain_name, "python.name.uk", None),
|
||||||
(validate_domain_name, "python.tips", None),
|
(validate_domain_name, "python.tips", None),
|
||||||
(validate_domain_name, "http://例子.测试", None),
|
(validate_domain_name, "例子.测试", None),
|
||||||
(validate_domain_name, "http://dashinpunytld.xn---c", None),
|
(validate_domain_name, "dashinpunytld.xn---c", None),
|
||||||
(validate_domain_name, "python..org", ValidationError),
|
(validate_domain_name, "python..org", ValidationError),
|
||||||
(validate_domain_name, "python-.org", ValidationError),
|
(validate_domain_name, "python-.org", ValidationError),
|
||||||
(validate_domain_name, "too-long-name." * 20 + "com", ValidationError),
|
(validate_domain_name, "too-long-name." * 20 + "com", ValidationError),
|
||||||
@ -652,6 +652,16 @@ TEST_DATA = [
|
|||||||
),
|
),
|
||||||
(DomainNameValidator(accept_idna=False), "ıçğü.com", ValidationError),
|
(DomainNameValidator(accept_idna=False), "ıçğü.com", ValidationError),
|
||||||
(DomainNameValidator(accept_idna=False), "not-domain-name", ValidationError),
|
(DomainNameValidator(accept_idna=False), "not-domain-name", ValidationError),
|
||||||
|
(
|
||||||
|
DomainNameValidator(accept_idna=False),
|
||||||
|
"not-domain-name, but-has-domain-name-suffix.com",
|
||||||
|
ValidationError,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
DomainNameValidator(accept_idna=False),
|
||||||
|
"not-domain-name.com, but has domain prefix",
|
||||||
|
ValidationError,
|
||||||
|
),
|
||||||
]
|
]
|
||||||
|
|
||||||
# Add valid and invalid URL tests.
|
# Add valid and invalid URL tests.
|
||||||
|
Loading…
Reference in New Issue
Block a user