Repository navigation
fix(deps): upgrade pillow to 13.0.0 for eight CVEs - #100
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Upgrades the locked pillow from 12.3.0 to 13.0.0 to fix eight CVEs (CVE-2026-112895, CVE-2026-112400, CVE-2026-112397, CVE-2026-112896, CVE-2026-112897, CVE-2026-112395, CVE-2026-112404, CVE-2026-112899).
What changed
uv lock --upgrade-package pillow. No other package moved.Why
Pillow is not a direct dependency and nothing under src, tests or scripts imports PIL. It arrives through pdfplumber 0.11.10, which declares
Pillow>=12.2.0(no upper bound), so 13.0.0 is allowed without any constraint change. Pillow 13.0.0 (released 2026-10-16) carries the fixes for these advisories. Its release notes list many decoder and encoder security fixes; they are at https://pillow.readthedocs.io/en/stable/releasenotes/13.0.0.html and use their own CVE and GHSA identifiers, which I could not map one to one to the eight identifiers above.Risk assessment
Verdict: safe.
pdfplumber>=0.11.4and no pillow range, so end users get whatever pillow pdfplumber resolves. This change affects the committed lock (CI, dev and the dist-check environment) and does not change what PyPI users install.make fetch). Text extraction through pdfplumber on those PDFs was therefore not exercised against pillow 13 here, although pdfplumber's text path does not use pillow.Verification
make verify(uv sync --locked, ruff check, ruff format --check, mypy, pytest with the coverage floor). Result: exit 0, "All checks passed!", "95 files already formatted", "Success: no issues found in 33 source files", "683 passed, 67 skipped", "Required test coverage of 85% reached. Total coverage: 93.82%". The whole output was read and contains no "FAILED" or error lines. The environment imported PIL 13.0.0.uv export --locked --format requirements-txt --no-emit-project -o requirements.audit.txt, thenuv run --with 'pip-audit==2.9.0' pip-audit --strict -r requirements.audit.txt): "No known vulnerabilities found".Prepared with AI assistance; reviewed before submission.