Fixed #22579 -- Corrected validation for email to reject trailing slash
Thanks to Claude Paroz for the report and patch and Tomasz Paczkowski for the review.
This commit is contained in:
parent
d64f192df1
commit
424fe76349
|
@ -68,7 +68,7 @@ class RegexValidator(object):
|
||||||
class URLValidator(RegexValidator):
|
class URLValidator(RegexValidator):
|
||||||
regex = re.compile(
|
regex = re.compile(
|
||||||
r'^(?:[a-z0-9\.\-]*)://' # scheme is validated separately
|
r'^(?:[a-z0-9\.\-]*)://' # scheme is validated separately
|
||||||
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'localhost|' # localhost...
|
||||||
r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}|' # ...or ipv4
|
r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}|' # ...or ipv4
|
||||||
r'\[?[A-F0-9]*:[A-F0-9:]+\]?)' # ...or ipv6
|
r'\[?[A-F0-9]*:[A-F0-9:]+\]?)' # ...or ipv6
|
||||||
|
@ -124,7 +124,7 @@ class EmailValidator(object):
|
||||||
r'|^"([\001-\010\013\014\016-\037!#-\[\]-\177]|\\[\001-\011\013\014\016-\177])*"$)', # quoted-string
|
r'|^"([\001-\010\013\014\016-\037!#-\[\]-\177]|\\[\001-\011\013\014\016-\177])*"$)', # quoted-string
|
||||||
re.IGNORECASE)
|
re.IGNORECASE)
|
||||||
domain_regex = re.compile(
|
domain_regex = re.compile(
|
||||||
r'(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+(?:[A-Z]{2,6}|[A-Z0-9-]{2,})$',
|
r'(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+(?:[A-Z]{2,6}|[A-Z0-9-]{2,}(?<!-))$',
|
||||||
re.IGNORECASE)
|
re.IGNORECASE)
|
||||||
literal_regex = re.compile(
|
literal_regex = re.compile(
|
||||||
# literal form, ipv4 or ipv6 address (SMTP 4.1.3)
|
# literal form, ipv4 or ipv6 address (SMTP 4.1.3)
|
||||||
|
|
|
@ -58,6 +58,7 @@ TEST_DATA = (
|
||||||
(validate_email, 'email@[::ffff:127.0.0.256]', ValidationError),
|
(validate_email, 'email@[::ffff:127.0.0.256]', ValidationError),
|
||||||
(validate_email, 'example@invalid-.com', ValidationError),
|
(validate_email, 'example@invalid-.com', 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, 'example@inv-.-alid.com', ValidationError),
|
(validate_email, 'example@inv-.-alid.com', ValidationError),
|
||||||
(validate_email, 'test@example.com\n\n<script src="x.js">', ValidationError),
|
(validate_email, 'test@example.com\n\n<script src="x.js">', ValidationError),
|
||||||
|
@ -174,6 +175,7 @@ TEST_DATA = (
|
||||||
(URLValidator(), 'http://.com', ValidationError),
|
(URLValidator(), 'http://.com', ValidationError),
|
||||||
(URLValidator(), 'http://invalid-.com', ValidationError),
|
(URLValidator(), 'http://invalid-.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),
|
||||||
(URLValidator(), 'http://inv-.-alid.com', ValidationError),
|
(URLValidator(), 'http://inv-.-alid.com', ValidationError),
|
||||||
(URLValidator(), 'file://localhost/path', ValidationError),
|
(URLValidator(), 'file://localhost/path', ValidationError),
|
||||||
|
|
Loading…
Reference in New Issue