bpo-36991: Fix incorrect exception escaping ZipFile.extract() (GH-13632)
(cherry picked from commit 2f1b857562
)
Co-authored-by: Berker Peksag <berker.peksag@gmail.com>
This commit is contained in:
parent
0d7cb5bb29
commit
717cc61ed1
|
@ -9,6 +9,7 @@ import subprocess
|
|||
import sys
|
||||
import time
|
||||
import unittest
|
||||
import unittest.mock as mock
|
||||
import zipfile
|
||||
|
||||
|
||||
|
@ -1739,6 +1740,16 @@ class OtherTests(unittest.TestCase):
|
|||
fp.seek(0, os.SEEK_SET)
|
||||
self.assertEqual(fp.tell(), 0)
|
||||
|
||||
@requires_bz2
|
||||
def test_decompress_without_3rd_party_library(self):
|
||||
data = b'PK\x05\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
zip_file = io.BytesIO(data)
|
||||
with zipfile.ZipFile(zip_file, 'w', compression=zipfile.ZIP_BZIP2) as zf:
|
||||
zf.writestr('a.txt', b'a')
|
||||
with mock.patch('zipfile.bz2', None):
|
||||
with zipfile.ZipFile(zip_file) as zf:
|
||||
self.assertRaises(RuntimeError, zf.extract, 'a.txt')
|
||||
|
||||
def tearDown(self):
|
||||
unlink(TESTFN)
|
||||
unlink(TESTFN2)
|
||||
|
|
|
@ -703,6 +703,7 @@ def _get_compressor(compress_type, compresslevel=None):
|
|||
|
||||
|
||||
def _get_decompressor(compress_type):
|
||||
_check_compression(compress_type)
|
||||
if compress_type == ZIP_STORED:
|
||||
return None
|
||||
elif compress_type == ZIP_DEFLATED:
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
Fixes a potential incorrect AttributeError exception escaping
|
||||
ZipFile.extract() in some unsupported input error situations.
|
Loading…
Reference in New Issue