mirror of https://github.com/python/cpython
Backport 51432:
Fix bug #1543303, tarfile adds padding that breaks gunzip. Patch # 1543897. (remove the padding)
This commit is contained in:
parent
db232dc86a
commit
7443b80549
|
@ -411,9 +411,6 @@ class _Stream:
|
||||||
self.buf += self.cmp.flush()
|
self.buf += self.cmp.flush()
|
||||||
|
|
||||||
if self.mode == "w" and self.buf:
|
if self.mode == "w" and self.buf:
|
||||||
blocks, remainder = divmod(len(self.buf), self.bufsize)
|
|
||||||
if remainder > 0:
|
|
||||||
self.buf += NUL * (self.bufsize - remainder)
|
|
||||||
self.fileobj.write(self.buf)
|
self.fileobj.write(self.buf)
|
||||||
self.buf = ""
|
self.buf = ""
|
||||||
if self.comptype == "gz":
|
if self.comptype == "gz":
|
||||||
|
|
|
@ -324,6 +324,27 @@ class WriteSize0Test(BaseTest):
|
||||||
class WriteStreamTest(WriteTest):
|
class WriteStreamTest(WriteTest):
|
||||||
sep = '|'
|
sep = '|'
|
||||||
|
|
||||||
|
def test_padding(self):
|
||||||
|
self.dst.close()
|
||||||
|
|
||||||
|
if self.comp == "gz":
|
||||||
|
f = gzip.GzipFile(self.dstname)
|
||||||
|
s = f.read()
|
||||||
|
f.close()
|
||||||
|
elif self.comp == "bz2":
|
||||||
|
f = bz2.BZ2Decompressor()
|
||||||
|
s = file(self.dstname).read()
|
||||||
|
s = f.decompress(s)
|
||||||
|
self.assertEqual(len(f.unused_data), 0, "trailing data")
|
||||||
|
else:
|
||||||
|
f = file(self.dstname)
|
||||||
|
s = f.read()
|
||||||
|
f.close()
|
||||||
|
|
||||||
|
self.assertEqual(s.count("\0"), tarfile.RECORDSIZE,
|
||||||
|
"incorrect zero padding")
|
||||||
|
|
||||||
|
|
||||||
class WriteGNULongTest(unittest.TestCase):
|
class WriteGNULongTest(unittest.TestCase):
|
||||||
"""This testcase checks for correct creation of GNU Longname
|
"""This testcase checks for correct creation of GNU Longname
|
||||||
and Longlink extensions.
|
and Longlink extensions.
|
||||||
|
|
|
@ -15,6 +15,8 @@ Library
|
||||||
- Bug #1541863: uuid.uuid1 failed to generate unique identifiers
|
- Bug #1541863: uuid.uuid1 failed to generate unique identifiers
|
||||||
on systems with low clock resolution.
|
on systems with low clock resolution.
|
||||||
|
|
||||||
|
- Bug #1543303, patch #1543897: remove NUL padding from tarfiles.
|
||||||
|
|
||||||
|
|
||||||
Documentation
|
Documentation
|
||||||
-------------
|
-------------
|
||||||
|
|
Loading…
Reference in New Issue