{"schema_version":"1.7.2","id":"OESA-2026-3167","modified":"2026-07-24T03:30:52Z","published":"2026-07-24T03:30:52Z","upstream":["CVE-2026-61714","CVE-2026-61720","CVE-2026-61721","CVE-2026-61722","CVE-2026-61723"],"summary":"fluidsynth security update","details":"FluidSynth is a free software synthesizer. Its currently based on the SoundFont 2 specifications and supports real time MIDI effect controls. It can be used as a shared library for embedding in other applications, can play MIDI files and has a command line shell. Many other applications use FluidSynth for audio synthesis.\r\n\r\nSecurity Fix(es):\n\nA heap-based buffer overflow was discovered in fluidsynth&apos;s MIDI player. When the synth is configured with `synth.midi-channels &gt; 16` an out-of-bounds memory access is performed on the array `_fluid_player_t::channel_isplaying` in heap memory invoking undefined behavior. No crafted MIDI file is required to expose this vulnerability.(CVE-2026-61714)\n\nAn unsigned integer overflow in fluidsynth&apos;s SF2 parser was discovered. The DMOD chunk handler calculates modulator count as `chunk.size / SF_MOD_SIZE - 1`. When `chunk.size = 0`, the division yields 0 and the unsigned subtraction wraps to `UINT_MAX` (4,294,967,295). The guard check passes because `0 % 10 == 0`. The loop iterates billions of times, allocating an `SFMod` struct per iteration until causing a denial of service via out-of-memory.(CVE-2026-61720)\n\nFluidsynth&apos;s native DLS loader sets sample loop points from file-sourced `wsmp.loop_start` and `wsmp.loop_length` values without calling `fluid_sample_validate()` or `fluid_sample_sanitize_loop()`. Crafted DLS files with loop values exceeding the sample buffer cause out-of-bounds reads during audio rendering, invoking undefined behavior and denial of service.(CVE-2026-61721)\n\nAn integer overflow was discovered in fluidsynth&apos;s native DLS parser. The expression `cbsize + connblocks * 12` overflows for `connblocks = 0x40000001`. The loop reads 12 bytes per iteration for ~1 billion iterations (~12.8 GB total) past the chunk boundary.(CVE-2026-61722)\n\nAn integer overflow was discovered in fluidsynth&apos;s native DLS parser. The ptbl chunk validation uses `uint32_t` arithmetic: `cues * 4 + cbsize != subchunk.size`. For `cues = 0x40000002` and `cbsize = 8`, the multiplication overflows: `0x40000002 * 4 = 0x100000008`, truncated to `0x8`. The check `8 + 8 = 16 == subchunk.size` passes. The subsequent `poolcues.resize(cues)` attempts a ~4GB allocation, and the loop reads billions of entries past the file&apos;s chunk boundary.(CVE-2026-61723)","affected":[{"package":{"ecosystem":"openEuler:24.03-LTS-SP4","name":"fluidsynth","purl":"pkg:rpm/openEuler/fluidsynth&distro=openEuler-24.03-LTS-SP4"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.5.6-1.oe2403sp4"}]}],"ecosystem_specific":{"aarch64":["fluidsynth-2.5.6-1.oe2403sp4.aarch64.rpm","fluidsynth-debuginfo-2.5.6-1.oe2403sp4.aarch64.rpm","fluidsynth-debugsource-2.5.6-1.oe2403sp4.aarch64.rpm","fluidsynth-devel-2.5.6-1.oe2403sp4.aarch64.rpm"],"noarch":["fluidsynth-help-2.5.6-1.oe2403sp4.noarch.rpm"],"src":["fluidsynth-2.5.6-1.oe2403sp4.src.rpm"],"x86_64":["fluidsynth-2.5.6-1.oe2403sp4.x86_64.rpm","fluidsynth-debuginfo-2.5.6-1.oe2403sp4.x86_64.rpm","fluidsynth-debugsource-2.5.6-1.oe2403sp4.x86_64.rpm","fluidsynth-devel-2.5.6-1.oe2403sp4.x86_64.rpm"]}}],"references":[{"type":"ADVISORY","url":"https://www.openeuler.org/zh/security/security-bulletins/detail/?id=openEuler-SA-2026-3167"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-61714"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-61720"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-61721"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-61722"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-61723"}],"database_specific":{"severity":"High"}}
