From ad0410ec4f458aa39803e5f6b9a3736527062dcd Mon Sep 17 00:00:00 2001
From: Mariusz Felisiak
Date: Wed, 14 Jun 2023 12:23:06 +0200
Subject: Fixed CVE-2023-36053 -- Prevented potential ReDoS in EmailValidator
and URLValidator.
Thanks Seokchan Yoon for reports.
---
tests/forms_tests/field_tests/test_emailfield.py | 3 ++-
tests/forms_tests/tests/test_forms.py | 19 +++++++++++--------
tests/validators/tests.py | 3 +++
3 files changed, 16 insertions(+), 9 deletions(-)
(limited to 'tests')
diff --git a/tests/forms_tests/field_tests/test_emailfield.py b/tests/forms_tests/field_tests/test_emailfield.py
index 869a1aacc5..079267ca8b 100644
--- a/tests/forms_tests/field_tests/test_emailfield.py
+++ b/tests/forms_tests/field_tests/test_emailfield.py
@@ -8,8 +8,9 @@ from . import FormFieldAssertionsMixin
class EmailFieldTest(FormFieldAssertionsMixin, SimpleTestCase):
def test_emailfield_1(self):
f = EmailField()
+ self.assertEqual(f.max_length, 320)
self.assertWidgetRendersTo(
- f, ''
+ f, ''
)
with self.assertRaisesMessage(ValidationError, "'This field is required.'"):
f.clean("")
diff --git a/tests/forms_tests/tests/test_forms.py b/tests/forms_tests/tests/test_forms.py
index 5563dc35fd..c283ab20ef 100644
--- a/tests/forms_tests/tests/test_forms.py
+++ b/tests/forms_tests/tests/test_forms.py
@@ -546,7 +546,8 @@ class FormsTestCase(SimpleTestCase):
f = SignupForm(auto_id=False)
self.assertHTMLEqual(
- str(f["email"]), ''
+ str(f["email"]),
+ '',
)
self.assertHTMLEqual(
str(f["get_spam"]), ''
@@ -555,7 +556,8 @@ class FormsTestCase(SimpleTestCase):
f = SignupForm({"email": "test@example.com", "get_spam": True}, auto_id=False)
self.assertHTMLEqual(
str(f["email"]),
- '',
+ '",
)
self.assertHTMLEqual(
str(f["get_spam"]),
@@ -3521,7 +3523,7 @@ Options:
-
+
@@ -3543,7 +3545,7 @@ Options:
-
+
@@ -3563,7 +3565,7 @@ Options:
|
- |
+
|
|
""",
@@ -3578,7 +3580,7 @@ Options: '
- '
'
+ ''
'',
@@ -5094,8 +5096,9 @@ class OverrideTests(SimpleTestCase):
'Name:
'
''
'
Enter a valid email address.
'
- 'Email:
'
- ''
+ "
Email: "
+ ''
+ '
'
'
This field is required.
'
'
Comment:
',
)
diff --git a/tests/validators/tests.py b/tests/validators/tests.py
index af08a785fe..e689435e3c 100644
--- a/tests/validators/tests.py
+++ b/tests/validators/tests.py
@@ -106,6 +106,7 @@ VALID_URLS = [
"ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
"ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
"ddddddddddddddddd:password@example.com:8080",
+ "http://userid:password" + "d" * 2000 + "@example.aaaaaaaaaaaaa.com",
"http://142.42.1.1/",
"http://142.42.1.1:8080/",
"http://➡.ws/䨹",
@@ -236,6 +237,7 @@ INVALID_URLS = [
"aaaaaa.com",
"http://example.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
"aaaaaa",
+ "http://example." + ("a" * 63 + ".") * 1000 + "com",
"http://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaa."
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaa"
"aaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaa"
@@ -291,6 +293,7 @@ TEST_DATA = [
(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, "example@%scom" % (("a" * 63 + ".") * 100), ValidationError),
(validate_email, None, ValidationError),
(validate_email, "", ValidationError),
(validate_email, "abc", ValidationError),
--
cgit v1.3