New submission from Danijel <danijel.ta...@consol.de>:
Hi, I have the following code: ``` import tarfile import sys tar = tarfile.open(fileobj=sys.stdin.buffer, mode='r|*') tar.extractall("tarout") tar.close() ``` then doing the following on a debian 10 system: ``` $ python -m tarfile -c git.tar /usr/share/doc/git $ python -V Python 3.8.1 $ cat git.tar | python foo.py $ cat git.tar | python foo.py Traceback (most recent call last): File "foo.py", line 5, in <module> tar.extractall("tarout") File "/home/danielt/miniconda3/lib/python3.8/tarfile.py", line 2026, in extractall self.extract(tarinfo, path, set_attrs=not tarinfo.isdir(), File "/home/danielt/miniconda3/lib/python3.8/tarfile.py", line 2067, in extract self._extract_member(tarinfo, os.path.join(path, tarinfo.name), File "/home/danielt/miniconda3/lib/python3.8/tarfile.py", line 2139, in _extract_member self.makefile(tarinfo, targetpath) File "/home/danielt/miniconda3/lib/python3.8/tarfile.py", line 2178, in makefile source.seek(tarinfo.offset_data) File "/home/danielt/miniconda3/lib/python3.8/tarfile.py", line 513, in seek raise StreamError("seeking backwards is not allowed") tarfile.StreamError: seeking backwards is not allowed ``` The second extraction trys to seek, although the mode is 'r|*'. For reference if I remove ".buffer" from the code above, I can run it with python2 without problems: ``` $ cat foo2.py import tarfile import sys tar = tarfile.open(fileobj=sys.stdin, mode='r|*') tar.extractall("tarout") tar.close() $ cat git.tar | python2 foo2.py $ cat git.tar | python2 foo2.py $ cat git.tar | python2 foo2.py $ cat git.tar | python2 foo2.py $ cat git.tar | python2 foo2.py ``` ---------- components: Library (Lib) messages: 364860 nosy: dtamuc priority: normal severity: normal status: open title: tarfile cannot extract from stdin versions: Python 3.8 _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue40049> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com