commit 567b9c44ab7234e68f676fb24a7ecd0924f2633e
parent 635ee4c2342be5c8dc8b8d8c0fec566eec8f340a
Author: dsp56300 <dsp56300@users.noreply.github.com>
Date: Wed, 31 Jul 2024 12:53:21 +0200
fix invalid presets being parsed
Diffstat:
2 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/source/nord/n2x/n2xJucePlugin/n2xPatchManager.cpp b/source/nord/n2x/n2xJucePlugin/n2xPatchManager.cpp
@@ -50,15 +50,22 @@ namespace n2xJucePlugin
const auto bank = _sysex[n2x::SysexIndex::IdxMsgType];
const auto program = _sysex[n2x::SysexIndex::IdxMsgSpec];
+ if(program >= n2x::g_programsPerBank)
+ return {};
+
char name[128]{0};
if(isSingle)
{
- (void)snprintf(name, sizeof(name), "%c.%02d", bank == n2x::SingleDumpBankEditBuffer ? 'e' : ('1' + bank), program);
+ 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
{
- (void)snprintf(name, sizeof(name), "P%c.%02d", bank == n2x::MultiDumpBankEditBuffer ? 'e' : ('1' + bank), program);
+ 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;
diff --git a/source/nord/n2x/n2xLib/n2xmiditypes.h b/source/nord/n2x/n2xLib/n2xmiditypes.h
@@ -34,4 +34,8 @@ namespace n2x
static constexpr uint32_t g_singleDumpSize = g_singleDataSize + g_sysexContainerSize;
static constexpr uint32_t g_multiDumpSize = g_multiDataSize + g_sysexContainerSize;
static constexpr uint32_t g_patchRequestSize = g_sysexContainerSize;
+
+ static constexpr uint32_t g_singleBankCount = 10;
+ static constexpr uint32_t g_multiBankCount = 4;
+ static constexpr uint32_t g_programsPerBank = 99;
}