diff options
| author | Erik Romijn <eromijn@solidlinks.nl> | 2014-05-16 15:40:52 +0200 |
|---|---|---|
| committer | Erik Romijn <eromijn@solidlinks.nl> | 2014-05-16 15:40:52 +0200 |
| commit | 50a289d05fba760716287d582c7ea19edd1159cc (patch) | |
| tree | 2ea573d273d6ced62831e840fab62e3177f62970 | |
| parent | 4b49cbfae47f279e1a3f33f4143ff416ddf68e3d (diff) | |
[1.6.x] Fixed #22579 -- Corrected validation for email to reject trailing slash
Backport of 424fe76349a2e34eafef13c2450a7a1f4d3115a6 from master.
| -rw-r--r-- | django/core/validators.py | 4 | ||||
| -rw-r--r-- | tests/validators/tests.py | 2 |
2 files changed, 4 insertions, 2 deletions
diff --git a/django/core/validators.py b/django/core/validators.py index 78716ccd40..378da27498 100644 --- a/django/core/validators.py +++ b/django/core/validators.py @@ -42,7 +42,7 @@ class RegexValidator(object): class URLValidator(RegexValidator): regex = re.compile( r'^(?:http|ftp)s?://' # http:// or https:// - r'(?:(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+(?:[A-Z]{2,6}\.?|[A-Z0-9-]{2,}\.?)|' # domain... + r'(?:(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+(?:[A-Z]{2,6}\.?|[A-Z0-9-]{2,}(?<!-)\.?)|' # domain... r'localhost|' # localhost... r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}|' # ...or ipv4 r'\[?[A-F0-9]*:[A-F0-9:]+\]?)' # ...or ipv6 @@ -85,7 +85,7 @@ class EmailValidator(object): r'|^"([\001-\010\013\014\016-\037!#-\[\]-\177]|\\[\001-\011\013\014\016-\177])*"$)', # quoted-string re.IGNORECASE) domain_regex = re.compile( - r'(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+(?:[A-Z]{2,6}|[A-Z0-9-]{2,})\.?$' # domain + r'(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+(?:[A-Z]{2,6}|[A-Z0-9-]{2,}(?<!-))$' # literal form, ipv4 address (SMTP 4.1.3) r'|^\[(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}\]$', re.IGNORECASE) diff --git a/tests/validators/tests.py b/tests/validators/tests.py index 8d21ddea79..53157297c4 100644 --- a/tests/validators/tests.py +++ b/tests/validators/tests.py @@ -44,6 +44,7 @@ TEST_DATA = ( (validate_email, 'email@127.0.0.1', ValidationError), (validate_email, 'example@invalid-.com', ValidationError), (validate_email, 'example@-invalid.com', ValidationError), + (validate_email, 'example@invalid.com-', ValidationError), (validate_email, 'example@inv-.alid-.com', ValidationError), (validate_email, 'example@inv-.-alid.com', ValidationError), (validate_email, 'test@example.com\n\n<script src="x.js">', ValidationError), @@ -153,6 +154,7 @@ TEST_DATA = ( (URLValidator(), 'http://.com', ValidationError), (URLValidator(), 'http://invalid-.com', ValidationError), (URLValidator(), 'http://-invalid.com', ValidationError), + (URLValidator(), 'http://invalid.com-', ValidationError), (URLValidator(), 'http://inv-.alid-.com', ValidationError), (URLValidator(), 'http://inv-.-alid.com', ValidationError), |
