Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: alexcrichton/tar-rs
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 0.4.44
Choose a base ref
...
head repository: alexcrichton/tar-rs
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 0.4.45
Choose a head ref
  • 18 commits
  • 23 files changed
  • 9 contributors

Commits on Feb 25, 2025

  1. Update LICENSE-MIT (#396)

    * Update LICENSE-MIT
    
    * Update LICENSE-MIT
    maximevtush authored Feb 25, 2025
    Configuration menu
    Copy the full SHA
    5af52e0 View commit details
    Browse the repository at this point in the history

Commits on Jun 5, 2025

  1. refactor: implement recommendations from clippy (#401)

    * refactor: implement recommendations from clippy
    
    * fix: fmt
    
    * refactor: shorten code
    KSXGitHub authored Jun 5, 2025
    Configuration menu
    Copy the full SHA
    c7c5479 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    a1c3036 View commit details
    Browse the repository at this point in the history

Commits on Oct 1, 2025

  1. Fix lints (#414)

    * Fix new elided lifetimes lint from Rust 1.89
    
    https://blog.rust-lang.org/2025/08/07/Rust-1.89.0/#mismatched-lifetime-syntaxes-lint
    
    Signed-off-by: Colin Walters <[email protected]>
    
    * Fix clippy lints and tweak doc comemnt for EntryType
    
    Clippy warned about a blank line in `EntryType` but the doc
    comment was awkward; I tried improving it (though in the
    end "entry type" is pretty self describing).
    
    Signed-off-by: Colin Walters <[email protected]>
    
    ---------
    
    Signed-off-by: Colin Walters <[email protected]>
    cgwalters authored Oct 1, 2025
    Configuration menu
    Copy the full SHA
    6ab0da5 View commit details
    Browse the repository at this point in the history
  2. Get rid of the t!() macro in tests (#415)

    * Replace `t!()` with `.unwrap()` [1/2]
    
    ast-grep --pattern 't!($$$X)' --rewrite '$$$X.unwrap()' --update-all
    
    * Replace `t!()` with `.unwrap()` [2/2]
    
    ast-grep --pattern 't!($$$X)' --rewrite '$$$X.unwrap()' --update-all
    
    * Replace `t!()` with `.unwrap()` inside macros [1/2]
    
    ast-grep --pattern '$M!($$$B t!($$$X) $$$A)' --rewrite '$M!($$$B $$$X.unwrap() $$$A)' --update-all
    
    * Replace `t!()` with `.unwrap()` inside macros [2/2]
    
    ast-grep --pattern '$M!($$$B t!($$$X) $$$A)' --rewrite '$M!($$$B $$$X.unwrap() $$$A)' --update-all
    
    * Remove `t!` macro
    
    ast-grep --pattern 'macro_rules! t { $$$_ }' --rewrite '' --update-all
    
    * Fix clippy
    
    cargo clippy --all-targets --fix
    xzfc authored Oct 1, 2025
    Configuration menu
    Copy the full SHA
    57d9696 View commit details
    Browse the repository at this point in the history

Commits on Oct 7, 2025

  1. OSS-Fuzz: Use derive via Arbitrary feature flag (#416)

    Before this change, the fuzzing target uses the arbitrary crate without its
    derive feature flag, and instead imports both the Arbitrary type from the
    arbitrary crate and the Arbitrary derive macro from the derive_arbitrary
    crate.
    
    When building in an environment that enables the `derive` feature of the
    arbitrary crate, this causes an error due to the ambiguity produced by having
    two separate imports of a derive macro called Arbitrary.
    
    This change drops the separate derive_arbitrary crate and instead enables
    the `derive` feature of the arbitrary crate, which resolves the ambiguity.
    cramertj authored Oct 7, 2025
    Configuration menu
    Copy the full SHA
    d0261f1 View commit details
    Browse the repository at this point in the history

Commits on Nov 23, 2025

  1. Configuration menu
    Copy the full SHA
    20a6509 View commit details
    Browse the repository at this point in the history

Commits on Jan 23, 2026

  1. ci: Add cargo-semver-checks to catch breaking API changes (#429)

    Uses the official GitHub Action to verify semver compatibility on
    every push and PR, comparing against the latest published crate version.
    
    Assisted-by: OpenCode (Opus 4.5)
    
    Signed-off-by: Colin Walters <[email protected]>
    cgwalters authored Jan 23, 2026
    Configuration menu
    Copy the full SHA
    00df62a View commit details
    Browse the repository at this point in the history

Commits on Feb 23, 2026

  1. Configuration menu
    Copy the full SHA
    88b1e3b View commit details
    Browse the repository at this point in the history

Commits on Feb 27, 2026

  1. Fix GNU long-name extension stream corruption on validation error (#434)

    In prepare_header_path, the GNU long-name extension entry was written to
    the stream before validating the truncated path via
    set_truncated_path_for_gnu_header. If validation failed (e.g., the
    truncated path contained '..'), the extension entry was already committed
    to the stream with no rollback. The Builder remained usable, so
    subsequent writes succeeded — but their data got associated with the
    orphaned long-name path, silently corrupting the archive.
    
    Fix by moving the truncation and validation above the append() call.
    Since set_truncated_path_for_gnu_header only writes to the in-memory
    header buffer (not the stream), reordering is safe.
    
    Also audited prepare_header_link — it does not have this issue because
    link names allow all path components (ParentDir, RootDir, etc.) and
    there is no post-append validation step.
    michelhe authored Feb 27, 2026
    Configuration menu
    Copy the full SHA
    9c5df0b View commit details
    Browse the repository at this point in the history

Commits on Mar 3, 2026

  1. tests: Add RandomReader to exercise partial-read resilience (#436)

    Wrap in-memory archive readers in tests with a RandomReader that
    returns 1..=N bytes per read() call using a deterministic seeded
    RNG. This ensures the tar parser correctly handles partial reads
    rather than assuming read() fills the entire buffer.
    
    Inspired by tar-core's test utilities.
    
    Assisted-by: OpenCode (Claude claude-opus-4-6)
    cgwalters authored Mar 3, 2026
    Configuration menu
    Copy the full SHA
    32a9bbb View commit details
    Browse the repository at this point in the history
  2. ci: Add xtask infra + reverse dependency testing (#435)

    The [xtask pattern](https://github.com/matklad/cargo-xtask) is
    a good way to capture ad-hoc workflows that one might otherwise write
    in a poor language like bash.
    
    Add the infra for that, and then add a `revdep-test` verb which
    also gets wired up to CI.
    
    This clones a few (ad-hoc selected) projects which use this crate.
    Then we patch their Cargo.toml to use our local checkout and run their test suite.
    Revdeps are pinned to release tags where possible (cargo 0.94.0,
    cargo-vendor-filterer v0.5.18) for easy auditing; crates.io retains a
    commit hash since it has no tags.
    
    The cargo test filter `package::` is a substring match so we skip
    unrelated cargo snapshot tests (cargo_add, cargo_info, etc.) that would
    otherwise fail due to Rust version differences.
    
    The goal is just more testing; prep for more work on this crate.
    
    Assisted-by: OpenCode (Claude Opus)
    
    Signed-off-by: Colin Walters <[email protected]>
    cgwalters authored Mar 3, 2026
    Configuration menu
    Copy the full SHA
    638c495 View commit details
    Browse the repository at this point in the history

Commits on Mar 10, 2026

  1. tests: Squash a warning

    Sorry I missed this one, some refactoring led to code duplication.
    cgwalters committed Mar 10, 2026
    Configuration menu
    Copy the full SHA
    c8cb250 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    ad1fde9 View commit details
    Browse the repository at this point in the history
  3. ci: Consolidate workflows (#439)

    * ci: Consolidate workflows and add required-checks sentinel job
    
    Merge the separate main.yml and revdep.yml workflow files into a single
    ci.yml. This makes it possible to configure a single 'required-checks'
    sentinel job as the required status check in repository settings,
    instead of having to enumerate each individual job.
    
    While here, modernize the workflow:
    - Update actions/checkout from @master to @v4
    - Use dtolnay/rust-toolchain instead of manual rustup where possible
    - Add concurrency settings to cancel in-progress runs on the same PR
    - Add explicit permissions (contents: read, write override for docs)
    - Add timeout-minutes to all jobs
    - Add fail-fast: false to the test matrix
    
    Assisted-by: OpenCode (Claude claude-opus-4-6)
    
    * ci: Bump actions/checkout to v6
    
    Assisted-by: OpenCode (Claude claude-opus-4-6)
    cgwalters authored Mar 10, 2026
    Configuration menu
    Copy the full SHA
    6071cbe View commit details
    Browse the repository at this point in the history

Commits on Mar 19, 2026

  1. archive: Unconditionally honor PAX size (#441)

    This synchronizes our behavior with most other tar parsers
    (including astral-tokio-tar and Go archive/tar) ensuring
    that we don't parse things differently.
    
    The problem with parsing size in particular differently is
    it's easy to craft a tar archive that appears completely differently
    between two parsers. This is the case with e.g. crates.io where
    astral-tokio-tar is used for validation server side, but cargo uses
    the `tar` crate to upload.
    
    With this, the two projects agree.
    
    Signed-off-by: Colin Walters <[email protected]>
    Co-authored-by: Colin Walters <[email protected]>
    alexcrichton and cgwalters authored Mar 19, 2026
    Configuration menu
    Copy the full SHA
    de1a587 View commit details
    Browse the repository at this point in the history
  2. archive: Prevent symlink-directory collision chmod attack (#442)

    When unpacking a tarball containing a symlink followed by a directory
    entry with the same path, unpack_dir previously used fs::metadata()
    which follows symlinks. This allowed an attacker to modify permissions
    on arbitrary directories outside the extraction path.
    
    The fix uses fs::symlink_metadata() to detect symlinks and refuse to
    treat them as valid existing directories.
    
    Document more exhaustively+consistently security caveats.
    
    Reported-by: Sergei Zimmerman <https://github.com/xokdvium>
    Assisted-by: OpenCode (Claude claude-opus-4-5)
    
    Signed-off-by: Colin Walters <[email protected]>
    Co-authored-by: Colin Walters <[email protected]>
    alexcrichton and cgwalters authored Mar 19, 2026
    Configuration menu
    Copy the full SHA
    17b1fd8 View commit details
    Browse the repository at this point in the history
  3. Bump to 0.4.45 (#443)

    * Bump to 0.4.45
    
    * Disable reverse deps checks
    alexcrichton authored Mar 19, 2026
    Configuration menu
    Copy the full SHA
    096e3d1 View commit details
    Browse the repository at this point in the history
Loading