This repository was archived by the owner on Sep 20, 2026. It is now read-only.
Repository navigation
fuse-archive 1.24 is the new stable release of the read-only FUSE filesystem for mounting various archive and compressed file formats. Built on C++23 standards, this release introduces key security enhancements, critical correctness fixes for hardlink resolution (especially in multi-archive mode), and improved test isolation.
🔒 Security Enhancements
Safe PATH Filtering
- Filtered Environment Execution: Added standard path filtering to restrict the
PATHenvironment variable during execution. The filesystem now keeps only safe, standard system directories (e.g.,/usr/bin,/bin,/usr/local/bin). This prevents untrusted or relative directories in a user's localPATHfrom executing arbitrary binaries during bidding, decompression, or filter setup.
🛠️ Correctness & Bug Fixes
Hardlink Resolution
- Index Renamed Nodes by Original Path: Resolved a critical bug where renamed filesystem nodes broke hardlink resolution. Renamed nodes are now indexed by their original paths, ensuring hardlinks resolve seamlessly post-rename.
- Multi-Archive Hardlink Support: Fixed hardlink resolution specifically when mounting in multi-archive mode, preventing linking conflicts between distinct archive boundaries.
Library Workarounds
- Optimized libarchive 2514 Workaround: Adjusted the
WORK_AROUND_ISSUE_2514version threshold. The workaround for thelibarchivecompress-filterSIGSEGVcrash is now skipped forlibarchive 3.8.8and newer, allowing modern versions (including the newly-deployed3.8.9) to leverage the clean, native, and fast upstream path.
🧪 Testing & Dev-Loop Quality
GPG Test Isolation
- Keychain Isolation: Completely isolated GPG integration tests from the host system's keyring. Improved reliability and eliminated test failures on systems with custom or pre-existing local GPG user configs.
- GPG Environment Robustness: Standardized test behaviors across varying Linux setups and environments.
🧹 Code Quality & Refactorings
- Filesystem Tree Encapsulation: Replaced the legacy
struct Treedeclaration with a fully-encapsulatedclass Treein theReaderheader, aligning with modern C++ class architecture and access conventions. - Tree Comparisons: Added a missing overload of
Tree::HasSamePathto simplify and safely check path equality within the filesystem tree representation.
Full Changelog: v1.22...v1.24