aboutsummaryrefslogtreecommitdiff
path: root/src/adlmidi_private.hpp
diff options
context:
space:
mode:
authorWohlstand <admin@wohlnet.ru>2017-10-25 15:21:22 +0300
committerWohlstand <admin@wohlnet.ru>2017-10-25 15:21:22 +0300
commit21180b02ab4146c43abc31484ab086b72104d8c5 (patch)
tree55b77e0a99c270ec766a3b2970c6604d1eeeaca4 /src/adlmidi_private.hpp
parent43a4513ec794c2f5619c64f321af3cd0dd47ff4e (diff)
downloadlibADLMIDI-21180b02ab4146c43abc31484ab086b72104d8c5.tar.gz
libADLMIDI-21180b02ab4146c43abc31484ab086b72104d8c5.tar.bz2
libADLMIDI-21180b02ab4146c43abc31484ab086b72104d8c5.zip
Prevent possible going far far away after end of track memory block
This will prevent possible crash on attempt to parse wrong or damaged MIDI file
Diffstat (limited to 'src/adlmidi_private.hpp')
-rw-r--r--src/adlmidi_private.hpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/adlmidi_private.hpp b/src/adlmidi_private.hpp
index d964e1e..83ac72e 100644
--- a/src/adlmidi_private.hpp
+++ b/src/adlmidi_private.hpp
@@ -356,8 +356,10 @@ private:
uint8_t subtype;
//! Targeted MIDI channel
uint8_t channel;
+ //! Is valid event
+ uint8_t isValid;
//! Reserved 5 bytes padding
- uint8_t __padding[5];
+ uint8_t __padding[4];
//! Absolute tick position (Used for the tempo calculation only)
uint64_t absPosition;
//! Raw data of this event
@@ -430,7 +432,7 @@ private:
std::vector<MidiTrackQueue > trackDataNew;
std::vector<int> trackDataNewStatus;
bool buildTrackData();
- MidiEvent parseEvent(uint8_t **ptr, int &status);
+ MidiEvent parseEvent(uint8_t **ptr, uint8_t *end, int &status);
public:
MIDIplay();