From 21180b02ab4146c43abc31484ab086b72104d8c5 Mon Sep 17 00:00:00 2001 From: Wohlstand Date: Wed, 25 Oct 2017 15:21:22 +0300 Subject: 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 --- src/adlmidi_private.hpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/adlmidi_private.hpp') 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 trackDataNew; std::vector trackDataNewStatus; bool buildTrackData(); - MidiEvent parseEvent(uint8_t **ptr, int &status); + MidiEvent parseEvent(uint8_t **ptr, uint8_t *end, int &status); public: MIDIplay(); -- cgit v1.2.3