homepage

This issue tracker has been migrated to GitHub , and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: tarfile does not support timestamp older 1970年01月01日
Type: Stage: resolved
Components: Versions: Python 2.7
process
Status: closed Resolution: out of date
Dependencies: Superseder:
Assigned To: lars.gustaebel Nosy List: dtibarra, hwm, iritkatriel, lars.gustaebel, loewis, socketpair
Priority: normal Keywords:

Created on 2012年05月14日 23:48 by hwm, last changed 2022年04月11日 14:57 by admin. This issue is now closed.

Messages (8)
msg160674 - (view) Author: Hans Werner May (hwm) Date: 2012年05月14日 23:48
Bug in tarfile:
In extractall, when a file exists in tarball with changetime older than (I don't know, in my case it was year 1956) tarfile raises an Overflow exception:
 File "/usr/lib64/python2.7/tarfile.py", line 2298, in utime
 os.utime(targetpath, (tarinfo.mtime, tarinfo.mtime))
OverflowError: Python int too large to convert to C long
System: Mageia 1.0
Python version: 2.7.1
msg160685 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2012年05月15日 06:21
The tar file format does nt support timestamps before 1970. From
http://sunsite.ualberta.ca/Documentation/Gnu/tar-1.13/html_chapter/tar_8.html
"POSIX tar format can represent time stamps in the range 1970年01月01日 00:00:00 through 2242年03月16日 12:56:31 UTC." ...
"Portable archives should also avoid time stamps before 1970. These time stamps are a common POSIX extension but their time_t representations are negative. Many traditional tar implementations generate a two's complement representation for negative time stamps that assumes a signed 32-bit time_t; hence they generate archives that are not portable to hosts with differing time_t representations."
Out of curiosity: where did you get a file that was last modified in 1956?
msg160707 - (view) Author: Lars Gustäbel (lars.gustaebel) * (Python committer) Date: 2012年05月15日 10:41
This issue is related to issue13158 which deals with a GNU tar specific extension to the original tar format. In that issue a negative number in the uid/gid fields caused problems. In your case the problem is a negative mtime field.
Reading these particular number fields was fixed in Python 3.2. You might be able to read the archive in question with that version. You should definitely try that.
Besides that, I was unable to reproduce the error you report. I just did some tests and could not even open my test archive, because it was not recognized as a tar file. I didn't come as far as the os.utime() call.
msg160712 - (view) Author: Hans Werner May (hwm) Date: 2012年05月15日 11:17
"Out of curiosity: where did you get a file that was last modified in 1956?"
No idea, this was a jpeg file, probably downloaded from internet. Btw, on Linux you can manipulate the creation date with the touch command, so it is possible to create a tarball with a member which has creation date 1956, but it is not possible to extract it with the extractall method.
msg161548 - (view) Author: David Ibarra (dtibarra) Date: 2012年05月25日 03:33
I too cannot reproduce this, tarfile seems to recognizes that it isn't a valid tar file (tested on OS X):
Davids-MacBook-Air:Workspace dibarra$ ls -l
total 8
-rw-r--r-- 1 dibarra staff 0 May 30 1956 testfile
Davids-MacBook-Air:Workspace dibarra$ tar -cvf testfile.tar testfile
a testfile
>>> t = tarfile.TarFile("testfile.tar")
Traceback (most recent call last):
...
tarfile.ReadError: missing or bad subsequent header
msg178962 - (view) Author: Марк Коренберг (socketpair) * Date: 2013年01月03日 16:33
Yes, bug exists in python 2.7. The same problem - negative timestamp in mtime field. It prepresented in binary value as
'\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\xfc'
in my case.
msg178971 - (view) Author: Марк Коренберг (socketpair) * Date: 2013年01月03日 18:13
And yes, bug does not appear in python3.2
msg391952 - (view) Author: Irit Katriel (iritkatriel) * (Python committer) Date: 2021年04月26日 17:19
Python 2 only issue.
History
Date User Action Args
2022年04月11日 14:57:30adminsetgithub: 59015
2021年04月26日 17:19:58iritkatrielsetstatus: open -> closed

nosy: + iritkatriel
messages: + msg391952

resolution: out of date
stage: resolved
2013年01月03日 18:13:23socketpairsetmessages: + msg178971
2013年01月03日 16:33:18socketpairsetnosy: + socketpair
messages: + msg178962
2012年05月30日 20:20:51vstinnersettitle: Bug in tarfile -> tarfile does not support timestamp older 1970年01月01日
2012年05月25日 03:33:32dtibarrasetnosy: + dtibarra
messages: + msg161548
2012年05月17日 06:48:38lars.gustaebelsetassignee: lars.gustaebel
2012年05月15日 11:17:09hwmsetmessages: + msg160712
2012年05月15日 10:41:20lars.gustaebelsetnosy: + lars.gustaebel
messages: + msg160707
2012年05月15日 06:21:40loewissetnosy: + loewis
messages: + msg160685
2012年05月14日 23:48:28hwmcreate

AltStyle によって変換されたページ (->オリジナル) /