Skip to content

ODFileSystem v0.2

Choose a tag to compare

@github-actions github-actions released this 18 Apr 04:18

Release notes

Highlights

Audio CDs now mount with distinct volume names derived from CDDB disc IDs, ancestry/identity handling in the core has been consolidated, and a Coverity-flagged buffer overrun in the Amiga CDDA mount path is fixed. A stack corruption issue was fixed that would make ODFileSystem crash with CDs with more than about four levels of directories.

Features

  • cdda/amiga: keep CDDA disc IDs in pure-audio volume names (1639317). Pure-audio discs now expose the CDDB disc id through the volume label so multiple audio CDs no longer all mount as "Audio CD". Mixed-mode discs continue to surface as the synthetic CDDA backend name. The pure-audio label is cached in cdda_context_t, carried through the backend, copied into the handler mount state, and used verbatim to build the DOS volume node name.

Improvements

  • odfs: centralize node identity comparison and simplify ancestry lookup (14db72f). Introduces odfs_node_matches_identity() in odfs/node.h, replacing repetitive field-by-field comparisons across mount and ancestry logic. The grandparent_out parameter of odfs_resolve_parent_node() is now optional, lowering stack usage for parent resolution in the Amiga handler.

Bug fixes

  • amiga: bound CDDA volume name copy (74804fb). The pure-audio handler previously copied the CDDA volume name using destination buffer sizes, but the source cdda_context_t field is only 32 bytes. The copy is now bounded to sizeof(ctx->volume_name), fixing the Coverity overrun warning in copy_pure_audio_volume_name().

Tests

  • Host-side CDDA naming coverage added (tests/unit/test_cdda.c).
  • Amiga handler test extended to verify NameFromLock(), Info(), and Examine() volume names (tests/amiga/test_handler.c).
  • New unit coverage for parent resolution with a NULL grandparent output (tests/unit/test_ancestry.c).

Full Changelog: v0.1...v0.2