New submission from Gregory P. Smith:

$ cat >test.py <<EOF
import tarfile
import sys

with tarfile.open(sys.argv[1], mode="r|*") as f:
  while True:
    info = f.next()
    if not info:
      break
EOF
$ tar cf test.tar -T /dev/null
$ python2.7 test.py test.tar
Traceback (most recent call last):
  File "test.py", line 6, in <module>
    info = f.next()
  File "/usr/lib/python2.7/tarfile.py", line 2319, in next
    self.fileobj.seek(self.offset)
  File "/usr/lib/python2.7/tarfile.py", line 555, in seek
    raise StreamError("seeking backwards is not allowed")
tarfile.StreamError: seeking backwards is not allowed
$ python3.4 test.py test.tar
Traceback (most recent call last):
  File "test.py", line 6, in <module>
    info = f.next()
  File "/usr/lib/python3.4/tarfile.py", line 2244, in next
    self.fileobj.seek(self.offset)
  File "/usr/lib/python3.4/tarfile.py", line 518, in seek
    raise StreamError("seeking backwards is not allowed")
tarfile.StreamError: seeking backwards is not allowed

I have reconfirmed that the above still happens using a top of tree 2.7.9+ 
build.

----------
components: Library (Lib)
messages: 232675
nosy: gregory.p.smith
priority: normal
severity: normal
stage: needs patch
status: open
title: tarfile raises an exception when reading an empty tar in streaming mode
type: behavior
versions: Python 2.7, Python 3.4, Python 3.5

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue23056>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to