Skip to content

fix(deps): remediate four pypdf CVEs by raising the floor to >=6.21.2 - #184

Merged
Aparnap2 merged 1 commit into
mainfrom
fix/pypdf-cve-remediation
Oct 24, 2026
Merged

Aparnap2 merged 1 commit into
mainfrom
fix/pypdf-cve-remediation

Conversation

@Aparnap2

Copy link
Copy Markdown
Owner

What changed

File Change
pyproject.toml pypdf>=6.19.0 → pypdf>=6.21.2 (1 line)
uv.lock re-pin pypdf 6.21.0 → 6.21.2 — only version change in the lock

Base main@c971727 · commit 1584eac · 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:

CVE Fix
CVE-2026-113786 6.21.1
CVE-2026-115572 6.21.2
CVE-2026-115585 6.21.2
CVE-2026-115580 6.21.2

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-audit goes 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 -r against fixtures/parser_eval: exit 0, zero differences. All 45 case PDFs cmp-identical, manifest identical (upstream generator_version 1.0.0, layout_version v1 unchanged). No corpus requalification needed — generator Version≈8 still reproduces the locked corpus byte-for-byte.

Test results

uvx pip-audit  -> No known vulnerabilities found   (claimops-ai: workspace-local, skipped as before)
uv pip check                                 -> compatible
uv run pytest tests/unit -q                  -> 67 passed
uv run ruff check .                          -> All checks passed!
uv run python -m tools.corpus.generate --out … --seed 29, diff -r fixtures/parser_eval
                                             -> exit 0 (45/45 byte-identical)
gofmt -l / go vet ./... / go test ./... -count=1 -> 41 packages ok (untouched scope)

Unresolved issues / edge cases

Status

Single-dependency superscription. Not authorized to merge — opened as a draft for review. Release NOT QUALIFIED.

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>
@coderabbitai

coderabbitai Bot commented Oct 24, 2026 •

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 3188efe6-c448-4420-bd71-8696ef550eca
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@Aparnap2
Aparnap2 marked this pull request as ready for review October 24, 2026 05:24
@Aparnap2
Aparnap2 merged commit ba802fc into main Oct 24, 2026
7 checks passed
@Aparnap2
Aparnap2 deleted the fix/pypdf-cve-remediation branch October 24, 2026 05:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant