summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNeal Norwitz <nnorwitz@gmail.com>2006-08-21 18:43:51 +0000
committerNeal Norwitz <nnorwitz@gmail.com>2006-08-21 18:43:51 +0000
commit7443b80549ad7d74c22d94e953ebe89137037f08 (patch)
tree1f25768bfba27f472cc602f869146b272d96e68d
parentdb232dc86a9a9992b7f0e9bdbc27426cc04ccf52 (diff)
downloadcpython-git-7443b80549ad7d74c22d94e953ebe89137037f08.tar.gz
Backport 51432:
Fix bug #1543303, tarfile adds padding that breaks gunzip. Patch # 1543897. (remove the padding)
-rw-r--r--Lib/tarfile.py3
-rw-r--r--Lib/test/test_tarfile.py21
-rw-r--r--Misc/NEWS2
3 files changed, 23 insertions, 3 deletions
diff --git a/Lib/tarfile.py b/Lib/tarfile.py
index c185fbd49e..38cccae1d5 100644
--- a/Lib/tarfile.py
+++ b/Lib/tarfile.py
@@ -411,9 +411,6 @@ class _Stream:
self.buf += self.cmp.flush()
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.buf = ""
if self.comptype == "gz":
diff --git a/Lib/test/test_tarfile.py b/Lib/test/test_tarfile.py
index 8ee0f41ea8..ebcb8c59f5 100644
--- a/Lib/test/test_tarfile.py
+++ b/Lib/test/test_tarfile.py
@@ -324,6 +324,27 @@ class WriteSize0Test(BaseTest):
class WriteStreamTest(WriteTest):
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):
"""This testcase checks for correct creation of GNU Longname
and Longlink extensions.
diff --git a/Misc/NEWS b/Misc/NEWS
index 537c4b1508..edeff46eff 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -15,6 +15,8 @@ Library
- Bug #1541863: uuid.uuid1 failed to generate unique identifiers
on systems with low clock resolution.
+- Bug #1543303, patch #1543897: remove NUL padding from tarfiles.
+
Documentation
-------------