| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| 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 | |
| Back | FazBrowse Home | New Git URL |
0 commit comments