|
| 1 | +# Copyright (C) 2022 ActiveState Software Inc. |
| 2 | +# test_urlparse.py is licensed under the PSFLv2 License. |
| 3 | +# See the file LICENSE for details. |
| 4 | + |
1 | 5 | from test import test_support |
2 | 6 | import sys |
3 | 7 | import unicodedata |
@@ -569,6 +573,36 @@ def test_telurl_params(self): |
569 | 573 | self.assertEqual(p1.params, 'phone-context=+1-914-555') |
570 | 574 |
|
571 | 575 |
|
| 576 | + def test_urlsplit_remove_unsafe_bytes(self): |
| 577 | + # Remove ASCII tabs and newlines from input |
| 578 | + url = "http://www.python.org/java\nscript:\talert('msg\r\n')/#frag" |
| 579 | + p = urlparse.urlsplit(url) |
| 580 | + self.assertEqual(p.scheme, "http") |
| 581 | + self.assertEqual(p.netloc, "www.python.org") |
| 582 | + self.assertEqual(p.path, "/javascript:alert('msg')/") |
| 583 | + self.assertEqual(p.query, "") |
| 584 | + self.assertEqual(p.fragment, "frag") |
| 585 | + self.assertEqual(p.username, None) |
| 586 | + self.assertEqual(p.password, None) |
| 587 | + self.assertEqual(p.hostname, "www.python.org") |
| 588 | + self.assertEqual(p.port, None) |
| 589 | + self.assertEqual(p.geturl(), "http://www.python.org/javascript:alert('msg')/#frag") |
| 590 | + |
| 591 | + # Remove ASCII tabs and newlines from input as unicode. |
| 592 | + url = u"http://www.python.org/java\nscript:\talert('msg\r\n')/#frag" |
| 593 | + p = urlparse.urlsplit(url) |
| 594 | + self.assertEqual(p.scheme, u"http") |
| 595 | + self.assertEqual(p.netloc, u"www.python.org") |
| 596 | + self.assertEqual(p.path, u"/javascript:alert('msg')/") |
| 597 | + self.assertEqual(p.query, u"") |
| 598 | + self.assertEqual(p.fragment, u"frag") |
| 599 | + self.assertEqual(p.username, None) |
| 600 | + self.assertEqual(p.password, None) |
| 601 | + self.assertEqual(p.hostname, u"www.python.org") |
| 602 | + self.assertEqual(p.port, None) |
| 603 | + self.assertEqual(p.geturl(), u"http://www.python.org/javascript:alert('msg')/#frag") |
| 604 | + |
| 605 | + |
572 | 606 | def test_attributes_bad_port(self): |
573 | 607 | """Check handling of non-integer ports.""" |
574 | 608 | p = urlparse.urlsplit("http://www.example.net:foo") |
|
0 commit comments