summaryrefslogtreecommitdiffstats
path: root/Lib/test
diff options
context:
space:
mode:
authorJason R. Coombs <jaraco@jaraco.com>2024-08-11 23:48:50 (GMT)
committerGitHub <noreply@github.com>2024-08-11 23:48:50 (GMT)
commit9cd03263100ddb1657826cc4a71470786cab3932 (patch)
tree1a1bbea5286dfe3e38be0efde432c7f044ad6ce0 /Lib/test
parent4534068f22f07a8ab9871bc16abf03c478ee2532 (diff)
downloadcpython-9cd03263100ddb1657826cc4a71470786cab3932.zip
cpython-9cd03263100ddb1657826cc4a71470786cab3932.tar.gz
cpython-9cd03263100ddb1657826cc4a71470786cab3932.tar.bz2
gh-122905: Sanitize names in zipfile.Path. (#122906)
Ported from zipp 3.19.1; ref jaraco/zipp#119.
Diffstat (limited to 'Lib/test')
-rw-r--r--Lib/test/test_zipfile/_path/test_path.py17
1 files changed, 17 insertions, 0 deletions
diff --git a/Lib/test/test_zipfile/_path/test_path.py b/Lib/test/test_zipfile/_path/test_path.py
index 99842ff..4a31cae 100644
--- a/Lib/test/test_zipfile/_path/test_path.py
+++ b/Lib/test/test_zipfile/_path/test_path.py
@@ -577,3 +577,20 @@ class TestPath(unittest.TestCase):
zipfile.Path(alpharep)
with self.assertRaises(KeyError):
alpharep.getinfo('does-not-exist')
+
+ def test_malformed_paths(self):
+ """
+ Path should handle malformed paths.
+ """
+ data = io.BytesIO()
+ zf = zipfile.ZipFile(data, "w")
+ zf.writestr("/one-slash.txt", b"content")
+ zf.writestr("//two-slash.txt", b"content")
+ zf.writestr("../parent.txt", b"content")
+ zf.filename = ''
+ root = zipfile.Path(zf)
+ assert list(map(str, root.iterdir())) == [
+ 'one-slash.txt',
+ 'two-slash.txt',
+ 'parent.txt',
+ ]