Repository navigation
fix(deps): remediate four pypdf CVEs by raising the floor to >=6.21.2 - #184
Merged
Merged
Conversation
The PyPI advisory database moved between the last green main run and the next PR's CI: pypdf 6.21.0 (in the lock via >=6.19.0) now carries four advisories, all fixed by 6.21.2: - CVE-2026-113786 (fix: 6.21.1) - CVE-2026-115572 (fix: 6.21.2) - CVE-2026-115585 (fix: 6.21.2) - CVE-2026-115580 (fix: 6.21.2) Mirrors the pillow remediation (W1 / #180) exactly: raise the pyproject floor, relock, verify the range, then prove the committed corpus is byte-identical under the new generator dependency. pypdf is the generator dependency for fixtures/parser_eval/ (seed 29, sole reproducer tools/corpus through tools/corpus.generate). Produced a candidate corpus with pypdf 6.21.2 at master seed 29 and diffed the whole tree against the committed corpus: 'diff -r' exits clean, all 45 case PDFs byte-identical. No corpus requalification is needed. Gates: pip-audit 'No known vulnerabilities found' (claimops-ai is workspace-local and skipped as before); pytest 67 passed; ruff 'All checks passed!'; go vet/test untouched scope 41 ok. Co-Authored-By: opencode <no-reply@opencode.ai>
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars.
|
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.
What changed
pyproject.tomlpypdf>=6.19.0→pypdf>=6.21.2(1 line)uv.lockpypdf 6.21.0 → 6.21.2— only version change in the lockBase
main@c971727· commit1584eac· mirrors W1 / #180 (pillow) exactly.Root cause — external, not this tree
The PyPI advisory database moved between the last green main run and the next PR's CI.
pypdf 6.21.0(in the lock via the old floor) now carries four advisories, all fixed upstream:The advisory failure surfaced on PR #183's security job; that PR changes only Go tests and is unaffected. This PR raises the floor so every branch re-running
pip-auditgoes green again.Why corpus identity had to be proven — pypdf is the generator dependency
Unlike pillow (a decoding library), pypdf writes
fixtures/parser_eval/—tools/corpus(sole reproducer of the committed 45-case Tier A+C corpus,master_seed: 29) depends on it. By the repo rule, corpus changes require requalification — so the load-bearing negative control:Candidate corpus generated with pypdf 6.21.2 at seed 29 →
diff -ragainstfixtures/parser_eval: exit 0, zero differences. All 45 case PDFscmp-identical, manifest identical (upstreamgenerator_version 1.0.0,layout_version v1unchanged). No corpus requalification needed — generator Version≈8 still reproduces the locked corpus byte-for-byte.Test results
Unresolved issues / edge cases
tools/corpus/generate.py'sGENERATOR_VERSIONcontract if pypdf surfaces a 7.x break before this ships — the byte-identity control above is the referee either way.Status
Single-dependency superscription. Not authorized to merge — opened as a draft for review. Release NOT QUALIFIED.