diff options
author | Wohlstand <admin@wohlnet.ru> | 2017-10-25 15:21:22 +0300 |
---|---|---|
committer | Wohlstand <admin@wohlnet.ru> | 2017-10-25 15:21:22 +0300 |
commit | 21180b02ab4146c43abc31484ab086b72104d8c5 (patch) | |
tree | 55b77e0a99c270ec766a3b2970c6604d1eeeaca4 /src/adlmidi_private.hpp | |
parent | 43a4513ec794c2f5619c64f321af3cd0dd47ff4e (diff) | |
download | libADLMIDI-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.hpp | 6 |
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(); |