Skip to content

Security: sauloverissimo/gingoduino

Security

SECURITY.md

Security Policy

Supported Versions

Version Supported
latest Yes

Reporting a Vulnerability

If you discover a security vulnerability, please report it privately:

  1. Do not open a public issue
  2. Email: sauloverissimo@gmail.com
  3. Include: description, steps to reproduce, potential impact

You will receive a response within 48 hours. Confirmed vulnerabilities will be patched and disclosed responsibly.

Scope

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

Mitigations

  • 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> and FixedArray<T, N> carry their capacity at the type level, so out-of-bounds writes are bounded at compile time

There aren't any published security advisories