forensic-mount 0.6.2

Mount forensic disk images, archives, and memory dumps as a filesystem on Linux, macOS, and Windows — ext4/NTFS/exFAT/HFS+/APFS/ISO, EWF/VMDK containers, zip/7z/tar, LiME/AVML/crash dumps
Documentation
[advisories]
version = 2

# `unsound` MUST be set explicitly, or unsoundness advisories are silently
# dropped — which is why RUSTSEC-2021-0154 sat un-evaluated behind an ignore
# entry that was doing nothing. cargo-deny 0.19.0 defaults `unsound` to
# "workspace", but builds the workspace-member set that scope compares against
# ONLY when the unrelated *unmaintained* scope is "workspace"/"transitive"
# (src/advisories.rs:77-93). With `unmaintained` at its own "all" default that
# set is empty, the membership test at line 120 is always false, and every
# `informational = "unsound"` advisory hits `continue` unreported. "all" takes
# the unconditional branch (line 111), so it does not depend on that set and
# stays correct if upstream fixes the gating. Verified against cargo-deny 0.19.0.
unsound = "all"

ignore = [
    # RUSTSEC-2026-0002 (lru `IterMut` violates Stacked Borrows, patched in
    # >= 0.16.3). Surfaced the moment `unsound = "all"` above made the gate
    # capable of firing. NOT fixable from this repo: the affected lru 0.12.5
    # arrives transitively as
    #     lru 0.12.5 <- ewf 0.4.6 <- forensic-vfs-engine 0.1.7 <- forensic-mount
    # and the published ewf 0.4.6 requires `lru = "0.12"`, a caret no downstream
    # `cargo update` can cross. (memf-core, the repo's other lru consumer,
    # already resolves the patched 0.16.4.)
    #
    # REMOVAL CONDITION — delete this entry, do not renew it: ewf-forensic's
    # `fix/lru-unsoundness-rustsec-2026-0002` widens the caret to lru 0.18.1;
    # once that merges and release-plz publishes ewf >= 0.4.8, run
    # `cargo update -p ewf` here (forensic-vfs-engine 0.1.7 requires `ewf
    # "0.4.1"`, so it needs no release of its own) and drop this line.
    "RUSTSEC-2026-0002",
]

[licenses]
version = 2
allow = [
    "MIT",
    "Apache-2.0",
    "BSD-2-Clause",
    "BSD-3-Clause",
    "ISC",
    "Unicode-3.0",
    "Zlib",
    # Permissive / public-domain licenses pulled in transitively across the
    # multi-format dependency surface (none are strong copyleft):
    "CC0-1.0",             # notify, tiny-keccak (public-domain dedication)
    "BSL-1.0",             # xxhash-rust (Boost Software License)
    "bzip2-1.0.6",         # libbzip2 C lib bundled by bzip2 (via sevenz-rust2 -> archive-core, 7z decompression)
    "CDLA-Permissive-2.0", # webpki-roots (Mozilla CA bundle data license)
    "MPL-2.0",             # option-ext (file-level copyleft; does not affect this crate's license)
]

[bans]
# An application bundling every supported filesystem, archive, container and
# memory-dump format (plus Dokan on Windows) has a large transitive graph where
# duplicate versions (windows-sys, getrandom, thiserror, ...) are unavoidable
# and not actionable. Warn rather than fail so genuine policy violations
# (licenses, advisories) stay visible.
multiple-versions = "warn"
wildcards = "allow" # path deps (ext4fs, ewf) have no version field; cargo-deny counts these as wildcards

[[bans.skip]]
name = "cpufeatures"
reason = "sha2/sha3 vs blake3 require different versions"

[[bans.skip]]
name = "hashbrown"
reason = "rusqlite (via hashlink) and ewf (via lru) require different versions"

[sources]
unknown-registry = "deny"
unknown-git = "deny"
allow-registry = ["https://github.com/rust-lang/crates.io-index"]
allow-git = []