mirror of https://github.com/python/cpython
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.
This commit is contained in:
parent
593e4ca7a5
commit
2ee9c6fa50
|
@ -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
|
||||
|
|
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue