Files
libfreemkv/docs/crc.md
T
Matthew Jackson 6e14fc0c0c libfreemkv: 1.7.0 groundwork — sector-recycle soundness + CI hardening
Security
- Remove the unsafe Vec::set_len over recycled sector buffers — UB reachable
  from safe code (GHSA-j8ww-f5fg-9pmh, low). Uses Vec::resize; pooling unchanged.

CI / tooling
- clippy on stable with the MSRV single-sourced from Cargo.toml; cargo-deny
  dependency-audit gate with first-party git sources allowed (#15); audience-based
  comment-guard (#17).

Docs
- README (keydb ownership, BD-J parser count), drive-access transport/reset
  notes, mux timeline module-doc links.
2026-09-02 12:40:55 -07:00

731 B

CRC helpers (src/mux/codec/crc.rs)

crc16_mlp reversed byte order

MLP's checksum is the "reversed" scheme. crc16_mlp emits its two bytes in the OPPOSITE order to a standard little-endian CRC readout, so the caller swaps them back and compares against the stored trailer word read LITTLE-endian — see truehd::mlp_major_sync_crc_ok, which is authoritative.

Comparing big-endian instead is precisely the bug that function was fixed for: it could never validate a real extended major sync, so whole TrueHD tracks were dropped silently. This comment used to prescribe exactly that, and to point at a truehd::mlp_major_sync_ok that does not exist. Verified against real MLP/TrueHD bitstreams (225/225 major-sync AUs).