v0.11.14: audit fixes — trailing sectors, verify stop, SCSI sense, O_CLOEXEC

Fix trailing sectors dropped at extent boundaries when sector_count % 3 != 0.
Add verify_title stop support via progress callback returning bool.
Add O_CLOEXEC on all SCSI fd opens to prevent leak to child processes.
Fix SCSI sense descriptor format detection (0x72/0x73 vs 0x70/0x71).
This commit is contained in:
Matt Jackson
2026-04-21 18:40:04 +00:00
parent 42c3fe6470
commit c0a96dfa97
5 changed files with 44 additions and 14 deletions
+8 -3
View File
@@ -204,13 +204,18 @@ impl DiscStream {
let ext_sectors = self.extents[self.current_extent].sector_count;
let remaining = ext_sectors.saturating_sub(self.current_offset);
let sectors = remaining.min(self.batch_sectors as u32) as u16;
let sectors = sectors - (sectors % 3);
if sectors == 0 {
if remaining == 0 {
self.current_extent += 1;
self.current_offset = 0;
return self.fill_extents();
}
let mut sectors = remaining.min(self.batch_sectors as u32) as u16;
// Align to 3-sector AACS units when possible, but never drop
// trailing sectors at extent boundaries. decrypt_sectors() safely
// skips partial units (chunks shorter than ALIGNED_UNIT_LEN).
if sectors >= 3 {
sectors -= sectors % 3;
}
let lba = ext_start + self.current_offset;
let bytes = sectors as usize * 2048;