Skip to content

zlib.Decompress.flush() silently returns corrupted output instead of raising zlib.error #156173

Closed

Description

@StanFromIreland

Bug report

Bug description:

zlib.Decompress.flush() discards errors returned by inflate(), so corrupt data comes back truncated and garbled with no exception, while decompress() reports this correctly.

>>> import zlib
>>> data = zlib.compress(b'abcdefgh' * 200, 9)
>>> corrupt = data[:15] + bytes(60)  # Corrupt the valid stream
>>> d = zlib.decompressobj()
>>> d.decompress(corrupt)  # decompress errors correctly
Traceback (most recent call last):
  File "<python-input-4>", line 1, in <module>
    d.decompress(corrupt)
    ~~~~~~~~~~~~^^^^^^^^^
zlib.error: Error -3 while decompressing data: incorrect data check
>>> d = zlib.decompressobj()
>>> d.decompress(corrupt, 1)  # leaving rest uncomsumed
b'a'
>>> d.flush()  # no flush, corrupted output
b'bcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdeP'

CPython versions tested on:

CPython main branch

Operating systems tested on:

No response

Linked PRs

Activity

  1. added 3 commits that reference this issue on Aug 23, 2026
  2. cjwatson commented on Sep 20, 2026

    @cjwatson
    Contributor

    FWIW, I noticed that this caused test failures in urllib3: urllib3/urllib3#5268

  3. StanFromIreland commented on Sep 20, 2026

    @StanFromIreland
    MemberAuthor

    I see, however those look correct, they were depending on the buggy behaviour (in tests the output doesn't matter, but in practice the corrupted data would be incorrect).

  4. cjwatson commented on Sep 20, 2026

    @cjwatson
    Contributor

    Fair enough - just wanted to keep you informed in case I'd misunderstood where the problem was.

  5. added a commit that references this issue on Oct 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

extension-modulesC modules in the Modules dirtype-bugAn unexpected behavior, bug, or error

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions