Skip to content

Commit 9e1f3cb

Browse files
AlanCodingjleclanche
authored andcommitted
handle case broken in error handling - IPv6 URL
1 parent 323de5c commit 9e1f3cb

File tree

2 files changed

+7
-1
lines changed

2 files changed

+7
-1
lines changed

oauth2_provider/validators.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,10 @@ def __call__(self, value):
2727
# Trivial case failed. Try for possible IDN domain
2828
if value:
2929
value = force_text(value)
30-
scheme, netloc, path, query, fragment = urlsplit(value)
30+
try:
31+
scheme, netloc, path, query, fragment = urlsplit(value)
32+
except ValueError as e:
33+
raise ValidationError("Cannot parse Redirect URI. Error: {}".format(e))
3134
try:
3235
netloc = netloc.encode("idna").decode("ascii") # IDN -> ACE
3336
except UnicodeError: # invalid domain part

tests/test_validators.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ def test_validate_bad_uris(self):
2828
self.assertRaises(ValidationError, validate_uris, bad_uri)
2929
bad_uri = "http:/example.com"
3030
self.assertRaises(ValidationError, validate_uris, bad_uri)
31+
# Bad IPv6 URL, urlparse behaves differently for these
32+
bad_uri = "https://[\"><script>alert()</script>"
33+
self.assertRaises(ValidationError, validate_uris, bad_uri)
3134
bad_uri = "my-scheme://example.com"
3235
self.assertRaises(ValidationError, validate_uris, bad_uri)
3336
bad_uri = "sdklfsjlfjljdflksjlkfjsdkl"

0 commit comments

Comments
 (0)