Fix potentiol buffer overrun in MUSSong2::Precache()

This commit is contained in:
Randy Heit 2015-12-31 15:28:18 -06:00
parent 1316120fe4
commit d8af2e558f
1 changed files with 6 additions and 6 deletions

View File

@ -211,11 +211,11 @@ bool MUSSong2::CheckDone()
void MUSSong2::Precache() void MUSSong2::Precache()
{ {
WORD *work = (WORD *)alloca(MusHeader->NumInstruments * sizeof(WORD)); TArray<WORD> work(MusHeader->NumInstruments);
const BYTE *used = (BYTE *)MusHeader + sizeof(MUSHeader) / sizeof(BYTE); const BYTE *used = (BYTE *)MusHeader + sizeof(MUSHeader) / sizeof(BYTE);
int i, j, k; int i, k;
for (i = j = k = 0; i < MusHeader->NumInstruments; ++i) for (i = k = 0; i < MusHeader->NumInstruments; ++i)
{ {
BYTE instr = used[k++]; BYTE instr = used[k++];
WORD val; WORD val;
@ -240,15 +240,15 @@ void MUSSong2::Precache()
{ {
for (int b = 0; b < numbanks; b++) for (int b = 0; b < numbanks; b++)
{ {
work[j++] = val | (used[k++] << 7); work.Push(val | (used[k++] << 7));
} }
} }
else else
{ {
work[j++] = val; work.Push(val);
} }
} }
MIDI->PrecacheInstruments(&work[0], j); MIDI->PrecacheInstruments(&work[0], work.Size());
} }
//========================================================================== //==========================================================================