Background
pdf-extract is held at 0.10 as a dev-dependency (the PDF-verification
test harness, tests/pdf_callouts.rs). The bump to 0.12 — which pulls
the patched lopdf >=0.42 and so clears advisory RUSTSEC-2026-0187 —
regresses text extraction on typst-generated PDFs: glyphs come back
under a substitution cipher (e.g. the → TSk), because 0.12 mishandles
the ToUnicode CMap of typst's subsetted fonts. That breaks the test's
content assertions.
Verified on the byte-identical book PDF: 0.10 extracts clean and passes;
0.12 garbles and fails.
Since lopdf is reachable only through this dev-dependency and only ever
parses our own trusted typst PDF (never untrusted input), the advisory has
no real exposure, so we suppressed it rather than take the breaking bump.
See 1bfd577.
Current holds (all need removing once upstream is fixed)
Done-when
pdf-extract ships a release that pulls lopdf >=0.42 and extracts
typst PDF text correctly (or we switch the test to a different extractor).
At that point: bump pdf-extract, drop all four holds above, and confirm
tests/pdf_callouts.rs -- --ignored passes.
Related
Supersedes dependabot PR #30 (the bump we declined).
Background
pdf-extractis held at0.10as a dev-dependency (the PDF-verificationtest harness,
tests/pdf_callouts.rs). The bump to0.12— which pullsthe patched
lopdf >=0.42and so clears advisory RUSTSEC-2026-0187 —regresses text extraction on typst-generated PDFs: glyphs come back
under a substitution cipher (e.g.
the→TSk), because0.12mishandlesthe ToUnicode CMap of typst's subsetted fonts. That breaks the test's
content assertions.
Verified on the byte-identical book PDF:
0.10extracts clean and passes;0.12garbles and fails.Since
lopdfis reachable only through this dev-dependency and only everparses our own trusted typst PDF (never untrusted input), the advisory has
no real exposure, so we suppressed it rather than take the breaking bump.
See 1bfd577.
Current holds (all need removing once upstream is fixed)
deny.toml—[advisories] ignore = ["RUSTSEC-2026-0187"].cargo/audit.toml— same advisory ignore (for barecargo audit).github/dependabot.yml—ignore: pdf-extractunder the cargo ecosystemCargo.toml—pdf-extract = "0.10"pinDone-when
pdf-extractships a release that pullslopdf >=0.42and extractstypst PDF text correctly (or we switch the test to a different extractor).
At that point: bump pdf-extract, drop all four holds above, and confirm
tests/pdf_callouts.rs -- --ignoredpasses.Related
Supersedes dependabot PR #30 (the bump we declined).