| Version | Supported |
|---|---|
| latest | Yes |
If you discover a security vulnerability, please report it privately:
- Do not open a public issue
- Email: sauloverissimo@gmail.com
- Include: description, steps to reproduce, potential impact
You will receive a response within 48 hours. Confirmed vulnerabilities will be patched and disclosed responsibly.
Gingoduino is a music theory engine. It carries no network, file, or OS access of its own; the library transforms musical structures into serialized formats (MIDI 1.0 bytes and MIDI 2.0 UMP Flex Data) using caller-provided storage. Security concerns are limited to:
- Buffer overflows in output adapters (
GingoMIDI1::fromEvent,GingoMIDI1::fromSequence,GingoMIDI2::chordName,GingoMIDI2::keySignature,GingoMIDI2::perNoteController) when the caller-provided buffer is smaller than required - Out-of-bounds reads in
GingoChord::identify,GingoField::deduce, and similar interpretive functions when the input note or branch count exceeds expected ranges - Integer overflows in value scaling between 7, 14, 16, and 32-bit MIDI fields
- Malformed input strings (chord names, scale type names, branch identifiers) causing unexpected lookups
- Out-of-bounds reads in PROGMEM lookup tables on AVR targets when index parameters fall outside table bounds
- The native test suite (504 tests) runs under AddressSanitizer and UndefinedBehaviorSanitizer in CI on every push to
main - All caller-provided buffers are length-checked before write
- All array index parameters are validated before PROGMEM read
- No dynamic allocation eliminates use-after-free and double-free classes
FixedStr<N>andFixedArray<T, N>carry their capacity at the type level, so out-of-bounds writes are bounded at compile time