| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
|
The current behavior matches LZMA. I think unlike decompress which is handed what is necessarily a zstd stream of one or more frames, with ZstdFile, a user may be parsing a format which has additional information after a zstd stream. >>> from lzma import LZMAFile, compress
>>> from io import BytesIO
>>> invalid = compress(b'foo') + b'bar'
>>> LZMAFile(BytesIO(invalid)).read()
b'foo'
>>> |
Sorry, something went wrong.
|
You are right this is the case for LZMAFile with format FORMAT_AUTO (which is the default) and also for BZ2File. However, LZMAFile with format FORMAT_XZ as well as GzipFile raise an exception in that case. >>> from lzma import LZMAFile, compress, FORMAT_XZ
>>> from io import BytesIO
>>> invalid = compress(b'foo') + b'bar'
>>> LZMAFile(BytesIO(invalid), format=FORMAT_XZ).read()
Traceback (most recent call last):
File "<python-input-3>", line 1, in <module>
LZMAFile(BytesIO(invalid), format=FORMAT_XZ).read()
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
File "/redacted/lzma.py", line 208, in read
return self._buffer.read(size)
~~~~~~~~~~~~~~~~~^^^^^^
File "/redacted/_compression.py", line 118, in readall
while data := self.read(sys.maxsize):
~~~~~~~~~^^^^^^^^^^^^^
File "/redacted/_compression.py", line 99, in read
raise EOFError("Compressed file ended before the "
"end-of-stream marker was reached")
EOFError: Compressed file ended before the end-of-stream marker was reached |
Sorry, something went wrong.
There was a problem hiding this comment.
Okay this looks good then!
Sorry, something went wrong.
|
In addition, consider decompress(compress(b"xxx") + b"yyy"):
Since for zstd we raise an exception on that, I would say to do the same for ZstdFile to be consistent. |
Sorry, something went wrong.
|
Thanks @Rogdham for the PR, and @AA-Turner for merging it 🌮🎉.. I'm working now to backport this PR to: 3.14. |
Sorry, something went wrong.
(cherry picked from commit 50b5370) Co-authored-by: Rogdham <3994389+Rogdham@users.noreply.github.com>
|
GH-133799 is a backport of this pull request to the 3.14 branch. |
Sorry, something went wrong.
| Back | FazBrowse Home | New Git URL |
We previously made sure that an exception is raised when decompressing trailer data with decompress:
Indeed, the Zstandard specification says “Zstandard compressed data is made of one or more frames”, and it does not say that random data can be added at the end.
However, this is not the case in ZstdFile / zstd.open:
After this PR, the last call becomes: