Audit v3 fixes: all 3 tiers (19 findings)

Tier 1 (compilation + correctness):
- Fix nightly-only is_multiple_of → % 2 != 0 (stable Rust compat)
- Fix parse_sample_rate: check 192 before 96 (was returning wrong rate)
- macOS drive discovery: split unix.rs → linux.rs + macos.rs
- Linux: EACCES returns DevicePermission not DeviceNotFound
- CLI pipe.rs: Ctrl+C signal handler added

Tier 2 (correctness + security):
- MkvStream: reset demuxer after scanning→streaming transition
- Windows SPTI: zero data buffer before ioctl
- AACS cert verification: documented why silently skipped
- KEYDB: HOME + USERPROFILE fallback for Windows
- Library modules: pub(crate) for internal modules
- AACS: explicit re-exports, AES primitives pub(crate)

Tier 3 (performance + polish):
- IsoStream: batch 64-sector reads (was 1 sector at a time)
- DiscStream: buffer swap instead of copy in decrypt_and_buffer
- Vec capacity hints in TS/PS demuxer hot paths
- NetworkStream: TLS warning documented
- Batch rip: per-title progress display
- cargo fmt: 0 violations

319 tests, 0 fmt violations.
This commit is contained in:
MattJackson
2026-04-11 19:24:25 +00:00
parent 43f81e4eae
commit a74d395f68
22 changed files with 174 additions and 73 deletions
+11 -10
View File
@@ -68,24 +68,24 @@
//! | E7xxx | AACS errors |
pub mod aacs;
pub mod clpi;
pub(crate) mod clpi;
pub mod css;
pub mod disc;
pub mod drive;
pub mod error;
pub mod event;
pub mod identity;
pub mod ifo;
pub(crate) mod identity;
pub(crate) mod ifo;
pub mod keydb;
pub mod labels;
pub mod mpls;
pub(crate) mod labels;
pub(crate) mod mpls;
pub mod mux;
pub mod platform;
pub mod profile;
pub(crate) mod platform;
pub(crate) mod profile;
pub mod scsi;
pub mod sector;
pub mod speed;
pub mod udf;
pub(crate) mod sector;
pub(crate) mod speed;
pub(crate) mod udf;
pub use drive::{find_drive, find_drives, resolve_device, DriveSession};
pub use error::{Error, Result};
@@ -111,3 +111,4 @@ pub use mux::{open_input, open_output, parse_url, InputOptions};
pub use scsi::ScsiTransport;
pub use sector::SectorReader;
pub use speed::DriveSpeed;
pub use udf::{read_filesystem, UdfFs};