From b41d38ae26b1da9519a6cd765bc2f2ce7d355007 Mon Sep 17 00:00:00 2001 From: Akshat1Nar Date: Sat, 26 Dec 2020 20:52:44 +0530 Subject: [PATCH] Fixed #32298 -- Fixed URLValidator hostname length validation. URLValidator now validates the maximum length of a hostname without the userinfo and port. --- django/core/validators.py | 2 +- tests/validators/valid_urls.txt | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/django/core/validators.py b/django/core/validators.py index 830b533848..a385819510 100644 --- a/django/core/validators.py +++ b/django/core/validators.py @@ -138,7 +138,7 @@ class URLValidator(RegexValidator): # section 3.1. It's defined to be 255 bytes or less, but this includes # one byte for the length of the name and one byte for the trailing dot # that's used to indicate absolute names in DNS. - if len(urlsplit(value).netloc) > 253: + if len(urlsplit(value).hostname) > 253: raise ValidationError(self.message, code=self.code, params={'value': value}) diff --git a/tests/validators/valid_urls.txt b/tests/validators/valid_urls.txt index a3db587492..3f8bf839b0 100644 --- a/tests/validators/valid_urls.txt +++ b/tests/validators/valid_urls.txt @@ -35,6 +35,10 @@ http://userid:password@example.com http://userid:password@example.com/ http://userid:password@example.com:8080 http://userid:password@example.com:8080/ +https://userid:paaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaassword@example.com +https://userid:paaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaassword@example.com:8080 +https://useridddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd:password@example.com +https://useriddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd:password@example.com:8080 http://142.42.1.1/ http://142.42.1.1:8080/ http://➡.ws/䨹