libfreemkv 0.31.1: UDF Long-AD stride fix + MKB trim guard + regression tests

This commit is contained in:
Matthew Jackson
2026-06-07 20:49:55 -07:00
parent c1b4f3cbb3
commit 222a596c55
2 changed files with 27 additions and 1 deletions
+26
View File
@@ -1,5 +1,31 @@
# Changelog # Changelog
## 0.31.1 (2026-06-08)
Correctness fixes for the file-backed mux and disc AACS-input read paths,
plus regression tests.
### Fixed
- UDF: honor the ICB allocation-descriptor type flag. The extent reader
hardcoded an 8-byte Short-AD stride, so files using 16-byte Long ADs (large
BD-ROM `.m2ts` streams) were mis-strided: descriptor #0 read correctly, then
the allocation-list terminator tripped on the zero bytes mid-descriptor and
parsing stopped after the first extent. Every multi-extent title truncated
at ~1 GiB. Short/Long/Extended ADs are now strided correctly (8/16/20 bytes;
Extended ADs carry the extent LBA at offset +12). This repaired both the
file mux (`iso://`) and the disc AACS-input read (`/AACS/*.inf`).
- AACS: never zero an MKB whose content length the parser cannot determine
(`mkb_content_len == 0` now leaves the buffer intact instead of truncating
it to empty).
### Tests
- Long-AD `read_icb_extents` and `read_file` coverage, Extended-AD stride,
sparse/terminator handling, continuation-loop bound, UDF name decoding, and
`trim_mkb` empty-guard; bad-sector recovery damage-skip range bounds and
bridge-degradation budget. Each verified to fail under a targeted mutation.
## 0.31.0 (2026-06-08) ## 0.31.0 (2026-06-08)
Hardening and correctness release: a library-wide review-and-fix pass across Hardening and correctness release: a library-wide review-and-fix pass across
+1 -1
View File
@@ -1,6 +1,6 @@
[package] [package]
name = "libfreemkv" name = "libfreemkv"
version = "0.31.0" version = "0.31.1"
edition = "2024" edition = "2024"
rust-version = "1.86" rust-version = "1.86"
license = "AGPL-3.0-only" license = "AGPL-3.0-only"