+21
-11
lines changedFilter options
+21
-11
lines changed Original file line number Diff line number Diff line change
@@ -614,32 +614,40 @@ def test_urlsplit_attributes(self):
614
614
615
615
def test_urlsplit_remove_unsafe_bytes(self):
616
616
# Remove ASCII tabs and newlines from input
617
-
url = "http://www.python.org/java\nscript:\talert('msg\r\n')/#frag"
617
+
url = "http\t://www.python\n.org\t/java\nscript:\talert('msg\r\n')/?query\n=\tsomething#frag\nment"
618
618
p = urllib.parse.urlsplit(url)
619
619
self.assertEqual(p.scheme, "http")
620
620
self.assertEqual(p.netloc, "www.python.org")
621
621
self.assertEqual(p.path, "/javascript:alert('msg')/")
622
-
self.assertEqual(p.query, "")
623
-
self.assertEqual(p.fragment, "frag")
622
+
self.assertEqual(p.query, "query=something")
623
+
self.assertEqual(p.fragment, "fragment")
624
624
self.assertEqual(p.username, None)
625
625
self.assertEqual(p.password, None)
626
626
self.assertEqual(p.hostname, "www.python.org")
627
627
self.assertEqual(p.port, None)
628
-
self.assertEqual(p.geturl(), "http://www.python.org/javascript:alert('msg')/#frag")
628
+
self.assertEqual(p.geturl(), "http://www.python.org/javascript:alert('msg')/?query=something#fragment")
629
629
630
630
# Remove ASCII tabs and newlines from input as bytes.
631
-
url = b"http://www.python.org/java\nscript:\talert('msg\r\n')/#frag"
631
+
url = b"http\t://www.python\n.org\t/java\nscript:\talert('msg\r\n')/?query\n=\tsomething#frag\nment"
632
632
p = urllib.parse.urlsplit(url)
633
633
self.assertEqual(p.scheme, b"http")
634
634
self.assertEqual(p.netloc, b"www.python.org")
635
635
self.assertEqual(p.path, b"/javascript:alert('msg')/")
636
-
self.assertEqual(p.query, b"")
637
-
self.assertEqual(p.fragment, b"frag")
636
+
self.assertEqual(p.query, b"query=something")
637
+
self.assertEqual(p.fragment, b"fragment")
638
638
self.assertEqual(p.username, None)
639
639
self.assertEqual(p.password, None)
640
640
self.assertEqual(p.hostname, b"www.python.org")
641
641
self.assertEqual(p.port, None)
642
-
self.assertEqual(p.geturl(), b"http://www.python.org/javascript:alert('msg')/#frag")
642
+
self.assertEqual(p.geturl(), b"http://www.python.org/javascript:alert('msg')/?query=something#fragment")
643
+
644
+
# with scheme as cache-key
645
+
url = "http://www.python.org/java\nscript:\talert('msg\r\n')/?query\n=\tsomething#frag\nment"
646
+
scheme = "ht\ntp"
647
+
for _ in range(2):
648
+
p = urllib.parse.urlsplit(url, scheme=scheme)
649
+
self.assertEqual(p.scheme, "http")
650
+
self.assertEqual(p.geturl(), "http://www.python.org/javascript:alert('msg')/?query=something#fragment")
643
651
644
652
def test_attributes_bad_port(self):
645
653
"""Check handling of invalid ports."""
Original file line number Diff line number Diff line change
@@ -456,6 +456,11 @@ def urlsplit(url, scheme='', allow_fragments=True):
456
456
"""
457
457
458
458
url, scheme, _coerce_result = _coerce_args(url, scheme)
459
+
460
+
for b in _UNSAFE_URL_BYTES_TO_REMOVE:
461
+
url = url.replace(b, "")
462
+
scheme = scheme.replace(b, "")
463
+
459
464
allow_fragments = bool(allow_fragments)
460
465
key = url, scheme, allow_fragments, type(url), type(scheme)
461
466
cached = _parse_cache.get(key, None)
@@ -472,9 +477,6 @@ def urlsplit(url, scheme='', allow_fragments=True):
472
477
else:
473
478
scheme, url = url[:i].lower(), url[i+1:]
474
479
475
-
for b in _UNSAFE_URL_BYTES_TO_REMOVE:
476
-
url = url.replace(b, "")
477
-
478
480
if url[:2] == '//':
479
481
netloc, url = _splitnetloc(url, 2)
480
482
if (('[' in netloc and ']' not in netloc) or
You can’t perform that action at this time.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4