Repository navigation
Take zip 9.2, quick-xml 0.42 and png 0.18 - #63
Conversation
zip 9.2 no longer rejects the method-99 central record the admission test relied on, so extraction now succeeds with the outer document's text. The test asserted zip's old strictness, not the property it names: its nested archive held only nested.xml, which DOCX never reads. Make the nested archive a readable DOCX with its own text, and assert that text never comes out, whether or not the corrupt record is refused. Supersedes tinyhumansai#58 (lockfile from dependabot's update).
quick-xml 0.42 stores names, text and attribute values as str and drops decode(). Compare names as str, read text and references through their str deref, and normalize attribute values without a decoder. decode() did no EOL normalization, and neither does the deref, so the extracted text is unchanged. Supersedes tinyhumansai#29.
png 0.18 returns output_buffer_size() as an Option, None only when the size overflows usize. The test fixture is 80x120, so unwrap it. Supersedes tinyhumansai#28.
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars.
|
Tiny Sweeper reviewReviewed head: Verdict: Ready for maintainer review · Priority: none Diagnostics and supporting detailsFull summaryPull request purpose (title): Take zip 9.2, quick-xml 0.42 and png 0.18. Purpose (from the pull-request title): take zip 9.2, quick-xml 0.42 and png 0.18. The PR folds three Dependabot updates (#58, #29, #28) that share Cargo.lock sections into one branch with a single consistent lock, since merging them one at a time would leave a lock that `cargo --locked` refuses. Behaviorally, the streaming OOXML intake and the Markdown-side OOXML reader are ported to quick-xml 0.42 (names compared as `&str`, text/CDATA/references read through the `str` deref, `decode()` removed, attribute values via `normalized_value` without a reader decoder); the zip admission test is reworked so its nested archive is itself a readable DOCX and the test now requires the outer document to be extracted; and a test-only png 0.18 `Option<usize>` unwrap lands in the PDF render fixture. Intake limits, DTD rejection and admission behavior are preserved, no public API changes, and hayro 0.6 is held back to keep the 1.88 MSRV. Unreviewed paths
Review snapshot
Completeness: Complete Features
Tests
FindingsNo active actionable findings. Before mergeNone. How this fits togetherflowchart LR
n0["xml_events<br/>changed"]:::changed
n1["xml_text<br/>changed"]:::changed
n2["elements<br/>changed"]:::changed
n3["...data_and_zip64_extensions_have_fixed_caps<br/>changed"]:::changed
n4["...retried_when_primary_directory_is_invalid<br/>changed"]:::changed
n5["extraction_failed"]:::impacted
n6["number"]:::impacted
n7["docx"]:::impacted
n8["...before_the_zip_index_can_deduplicate_them"]:::impacted
n9["extract_office"]:::impacted
n10["ordered_parts"]:::impacted
n0 -->|calls| n5
n1 -->|calls| n5
n3 -->|calls| n7
n3 -->|tests| n7
n4 -->|calls| n6
n4 -->|tests| n6
n8 -->|calls| n6
n8 -->|tests| n6
n9 -->|calls| n1
n10 -->|calls| n2
classDef changed fill:#0d4429,stroke:#238636,color:#e6edf3
classDef impacted fill:#161b22,stroke:#6e7681,color:#c9d1d9
classDef flagged fill:#5a1e02,stroke:#d93f0b,color:#ffffff
classDef blocking fill:#67060c,stroke:#f85149,color:#ffffff
Agent review detailscritique
security
tests
commits
description
Evidence and run details
|
The test only checked the text when extraction succeeded, so an error would have passed silently. Under zip 9.2 extraction succeeds, so require exactly the outer document's single section.
Supersedes #58, #29 and #28 (dependabot). They share Cargo.lock sections, so merging them one by one leaves a lock cargo refuses (
--locked). This PR is one branch with one consistent lock. Commits:payload_footer_cannot_be_retried_when_primary_directory_is_invalidrelied on; extraction now returns the outer document's text. The nested archive held onlynested.xml, which DOCX never reads, so the test asserted zip's strictness, not the property. The nested archive is now a readable DOCX with its own text, and the test asserts that text never comes out, whether or not the record is refused.Cell::new(false)inopen_admitted_zip), this test still passes, on main (zip 9.0.5) as well as here. So neither the old test nor the new one exercises the mask; zip never falls back to an earlier footer for this archive. A test that does needs a primary directory that preflight admits but zip rejects.strand removesdecode(). The port compares names asstr, reads text and references through theirstrderef, and usesnormalized_valuewithout a decoder.decode()did no EOL normalization, and neither does the deref, so the output is unchanged.output_buffer_size()is nowOption<usize>, and the 80x120 fixture unwraps it. Test-only.Public API: none.
Not included: hayro 0.6 (#27). Its vello 0.0.7 dependency needs rustc 1.92, above this crate's MSRV of 1.88 (
cargo +1.88 checkfails). The port is ready on its own branch, but it waits on a decision to raise the MSRV.Validation, on our Linux CI runner, on 3ff26dd (main 835854e):
cargo fmt --all -- --check: clean.cargo clippy --locked --all-targets --all-features -- -D warnings: clean.cargo test --locked --all-features: 224 passed, 0 failed.cargo +1.88 check --locked --all-targets --all-features(MSRV): passes.cargo metadataleaves no diff).Branch: M3gA-Mind/tinydocs deps/batch-2026-11 @ 3ff26dd (pushed).