gearmulator

Emulation of classic VA synths of the late 90s/2000s that are based on Motorola 56300 family DSPs
Log | Files | Refs | Submodules | README | LICENSE

commit d548533b878d4f9bf233af7faab0645ba9f81e36
parent 567b9c44ab7234e68f676fb24a7ecd0924f2633e
Author: dsp56300 <dsp56300@users.noreply.github.com>
Date:   Wed, 31 Jul 2024 13:00:55 +0200

validate device id

Diffstat:
Msource/nord/n2x/n2xJucePlugin/n2xPatchManager.cpp | 22++++++++++++----------
1 file changed, 12 insertions(+), 10 deletions(-)

diff --git a/source/nord/n2x/n2xJucePlugin/n2xPatchManager.cpp b/source/nord/n2x/n2xJucePlugin/n2xPatchManager.cpp @@ -45,28 +45,30 @@ namespace n2xJucePlugin if(!isSingle && !isMulti) return {}; - auto p = std::make_shared<pluginLib::patchDB::Patch>(); - + const auto deviceId = _sysex[n2x::SysexIndex::IdxDevice]; const auto bank = _sysex[n2x::SysexIndex::IdxMsgType]; const auto program = _sysex[n2x::SysexIndex::IdxMsgSpec]; + if(deviceId > 15) + return {}; + if(program >= n2x::g_programsPerBank) return {}; + if(isSingle && (bank < n2x::SysexByte::SingleDumpBankEditBuffer || bank > (n2x::SysexByte::SingleDumpBankEditBuffer + n2x::g_singleBankCount))) + return {}; + + if(isMulti && (bank < n2x::SysexByte::MultiDumpBankEditBuffer || bank > (n2x::SysexByte::MultiDumpBankEditBuffer + n2x::g_multiBankCount))) + return {}; + + auto p = std::make_shared<pluginLib::patchDB::Patch>(); + char name[128]{0}; if(isSingle) - { - if(bank < n2x::SysexByte::SingleDumpBankEditBuffer || bank > (n2x::SysexByte::SingleDumpBankEditBuffer + n2x::g_singleBankCount)) - return {}; (void)snprintf(name, sizeof(name), "%c.%02d", bank == n2x::SingleDumpBankEditBuffer ? 'e' : '0' + (bank - n2x::SysexByte::SingleDumpBankEditBuffer), program); - } else - { - if(bank < n2x::SysexByte::MultiDumpBankEditBuffer || bank > (n2x::SysexByte::MultiDumpBankEditBuffer + n2x::g_multiBankCount)) - return {}; (void)snprintf(name, sizeof(name), "P%c.%02d", bank == n2x::MultiDumpBankEditBuffer ? 'e' : '0' + (bank - n2x::SysexByte::MultiDumpBankEditBuffer), program); - } p->name = name; p->sysex = std::move(_sysex);