Kevin Bortis 5e00a01e21 Add FLAC error handling regression tests
Regression tests for the error handling improvements in
fix/flac-error-handling (PR #23). The fix changed decode/encode to
return 0 instead of (size_t)-1 on failure, added NULL allocation
checks, and fixed a decoder memory leak on init failure.

Tests added (flacErrors suite):
- decode_garbage_returns_zero: random non-FLAC data
- decode_truncated_flac_returns_zero: valid magic, truncated stream
- decode_empty_input_returns_zero: NULL source buffer
- decode_zero_length_returns_zero: non-NULL but zero-length source
- encode_zero_length_no_crash: NULL source, verifies no crash/leak
- encode_garbage_roundtrip_fails_cleanly: non-PCM encode + decode
- decode_dst_too_small_returns_zero: undersized output buffer

All tests are self-contained (no fixture files needed) and pass
under AddressSanitizer.
2026-04-01 20:24:13 +02:00
2025-07-31 09:50:10 +01:00
2026-03-14 18:52:30 +00:00
2026-03-19 08:45:07 +01:00
2025-10-11 14:06:30 +01:00
2024-04-30 15:51:47 +01:00
2025-12-23 08:23:40 +00:00
2019-03-16 17:40:39 +00:00

libaaruformat

C implementation of Aaru file format.

The target is to be able to compile it with a normal C (C89 compliant) compiler.

There are no external dependencies.

cmake is not a hard dependency, it's merely for the ease of using IDEs (specifically CLion).

Currently supported features:

  • AaruFormat V1 images reading (writing will never be implemented)
  • AaruFormat V2 images reading and writing
  • LZMA compression
  • Claunia Subchannel Transform
  • Optical disc tracks
  • XML metadata retrieval (writing will never be implemented)
  • JSON metadata retrieval and writing
  • Hashing while writing (MD5, SHA1, SHA256, SpamSum and BLAKE3)
  • Deduplication
  • Tape file and partitions
  • Dump hardware lists
  • Currently on sync (as of October 2025) with Aaru's media type list
  • CHS geometry retrieval and setting
  • Metadata
  • Unit testing
  • Automatic generation of API documentation
  • It is to all effects feature parity with C#

Things still to be implemented that are already in the C# version:

  • Automatic media type generation from C# enumeration
  • Nuget package for linking with Aaru

Things to be implemented not in the C# version (maybe):

  • Compile for Dreamcast (KallistiOS preferibly)
  • Compile for PlayStation Portable
  • Compile for Wii
  • Compile for Wii U
  • Compile for PlayStation 2
  • Compile for PlayStation 3
  • Snapshots
  • Parent images
  • Data positioning measurements

Building and Testing

Standard Build

mkdir build
cd build
cmake ..
cmake --build .

Running Tests

cd build
ctest --verbose

Building with Address Sanitizer

For debugging memory issues, you can build with Address Sanitizer enabled:

mkdir build-asan
cd build-asan
cmake -DUSE_ASAN=ON -DCMAKE_BUILD_TYPE=Debug ..
cmake --build .
ctest --verbose

For detailed information on using Address Sanitizer to detect memory issues, see docs/ASAN_USAGE.md.

Other Build Options

  • -DUSE_SLOG=ON - Enable slog logging for debugging
  • -DUSE_ASAN=ON - Enable Address Sanitizer for memory error detection
Description
C implementation of Aaru file format.
Readme LGPL-2.1 82 MiB
Languages
C 89.7%
C++ 8.9%
CMake 1.1%
Shell 0.2%
PowerShell 0.1%