Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork32k
gh-132983: Don't allow trailer data in ZstdFile#133736
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Uh oh!
There was an error while loading.Please reload this page.
Conversation
The current behavior matches LZMA. I think unlike >>>from lzmaimport LZMAFile, compress>>>from ioimport BytesIO>>> invalid= compress(b'foo')+b'bar'>>> LZMAFile(BytesIO(invalid)).read()b'foo'>>> |
You are right this is the case for However, >>>fromlzmaimportLZMAFile,compress,FORMAT_XZ>>>fromioimportBytesIO>>>invalid=compress(b'foo')+b'bar'>>>LZMAFile(BytesIO(invalid),format=FORMAT_XZ).read()Traceback (mostrecentcalllast):File"<python-input-3>",line1,in<module>LZMAFile(BytesIO(invalid),format=FORMAT_XZ).read()~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^File"/redacted/lzma.py",line208,inreadreturnself._buffer.read(size)~~~~~~~~~~~~~~~~~^^^^^^File"/redacted/_compression.py",line118,inreadallwhiledata:=self.read(sys.maxsize):~~~~~~~~~^^^^^^^^^^^^^File"/redacted/_compression.py",line99,inreadraiseEOFError("Compressed file ended before the ""end-of-stream marker was reached")EOFError:Compressedfileendedbeforetheend-of-streammarkerwasreached |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Okay this looks good then!
Rogdham commentedMay 9, 2025 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
In addition, consider
Since for |
50b5370
intopython:mainUh oh!
There was an error while loading.Please reload this page.
Thanks@Rogdham for the PR, and@AA-Turner for merging it 🌮🎉.. I'm working now to backport this PR to: 3.14. |
(cherry picked from commit50b5370)Co-authored-by: Rogdham <3994389+Rogdham@users.noreply.github.com>
GH-133799 is a backport of this pull request to the3.14 branch. |
Uh oh!
There was an error while loading.Please reload this page.
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: