diff --git a/tests/test_url.py b/tests/test_url.py index 2252f24d..d9805c53 100644 --- a/tests/test_url.py +++ b/tests/test_url.py @@ -134,6 +134,7 @@ def test_returns_true_on_valid_public_url(address, public): 'http://[2010:836B:4179::836B:4179', 'http://2010:836B:4179::836B:4179', 'http://2010:836B:4179::836B:4179:80/index.html', + 'http://0.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.', # ReDoS ]) def test_returns_failed_validation_on_invalid_url(address): assert isinstance(url(address), ValidationFailure) diff --git a/validators/url.py b/validators/url.py index 37d946cb..77a8973f 100644 --- a/validators/url.py +++ b/validators/url.py @@ -70,10 +70,10 @@ r")\]|" # host name r"(?:(?:(?:xn--[-]{0,2})|[a-z\u00a1-\uffff\U00010000-\U0010ffff0-9]-?)*" - r"[a-z\u00a1-\uffff\U00010000-\U0010ffff0-9]+)" + r"[a-z\u00a1-\uffff\U00010000-\U0010ffff0-9])" # domain name r"(?:\.(?:(?:xn--[-]{0,2})|[a-z\u00a1-\uffff\U00010000-\U0010ffff0-9]-?)*" - r"[a-z\u00a1-\uffff\U00010000-\U0010ffff0-9]+)*" + r"[a-z\u00a1-\uffff\U00010000-\U0010ffff0-9])*" # TLD identifier r"(?:\.(?:(?:xn--[-]{0,2}[a-z\u00a1-\uffff\U00010000-\U0010ffff0-9]{2,})|" r"[a-z\u00a1-\uffff\U00010000-\U0010ffff]{2,}))"