diff options
author | Lars Gustäbel <lars@gustaebel.de> | 2010-06-03 09:56:22 (GMT) |
---|---|---|
committer | Lars Gustäbel <lars@gustaebel.de> | 2010-06-03 09:56:22 (GMT) |
commit | 2ee9c6fa506595fd296879823f0b445f0aec26ce (patch) | |
tree | 0a9a0fbbf5f071cc0783c9212655b28ad3d5ddc7 | |
parent | 593e4ca7a5300752c1fe595c22caa859b7fcd5fb (diff) | |
download | cpython-2ee9c6fa506595fd296879823f0b445f0aec26ce.zip cpython-2ee9c6fa506595fd296879823f0b445f0aec26ce.tar.gz cpython-2ee9c6fa506595fd296879823f0b445f0aec26ce.tar.bz2 |
Issue #8833: tarfile created hard link entries with a size
field != 0 by mistake. The associated testcase did not
expose this bug because it was broken too.
-rw-r--r-- | Lib/tarfile.py | 2 | ||||
-rw-r--r-- | Lib/test/test_tarfile.py | 6 | ||||
-rw-r--r-- | Misc/NEWS | 3 |
3 files changed, 9 insertions, 2 deletions
diff --git a/Lib/tarfile.py b/Lib/tarfile.py index 4b03c28..a54b3b8 100644 --- a/Lib/tarfile.py +++ b/Lib/tarfile.py @@ -1884,7 +1884,7 @@ class TarFile(object): tarinfo.mode = stmd tarinfo.uid = statres.st_uid tarinfo.gid = statres.st_gid - if stat.S_ISREG(stmd): + if type == REGTYPE: tarinfo.size = statres.st_size else: tarinfo.size = 0L diff --git a/Lib/test/test_tarfile.py b/Lib/test/test_tarfile.py index 52d6ab3..0d58cda 100644 --- a/Lib/test/test_tarfile.py +++ b/Lib/test/test_tarfile.py @@ -662,10 +662,14 @@ class WriteTest(WriteTestBase): if hasattr(os, "link"): link = os.path.join(TEMPDIR, "link") target = os.path.join(TEMPDIR, "link_target") - open(target, "wb").close() + fobj = open(target, "wb") + fobj.write("aaa") + fobj.close() os.link(target, link) try: tar = tarfile.open(tmpname, self.mode) + # Record the link target in the inodes list. + tar.gettarinfo(target) tarinfo = tar.gettarinfo(link) self.assertEqual(tarinfo.size, 0) finally: @@ -46,6 +46,9 @@ C-API Library ------- +- Issue #8833: tarfile created hard link entries with a size field != 0 by + mistake. + - Issue #1368247: set_charset (and therefore MIMEText) now automatically encodes a unicode _payload to the output_charset. |