diff options
Diffstat (limited to 'libs/evoral/evoral/midi_util.h')
-rw-r--r-- | libs/evoral/evoral/midi_util.h | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/libs/evoral/evoral/midi_util.h b/libs/evoral/evoral/midi_util.h index 5c72fb86c9..f32e816321 100644 --- a/libs/evoral/evoral/midi_util.h +++ b/libs/evoral/evoral/midi_util.h @@ -95,7 +95,9 @@ midi_event_size(const uint8_t* buffer) int end; for (end = 1; buffer[end] != MIDI_CMD_COMMON_SYSEX_END; end++) { - assert((buffer[end] & 0x80) == 0); + if ((buffer[end] & 0x80) != 0) { + return -1; + } } assert(buffer[end] == MIDI_CMD_COMMON_SYSEX_END); return end + 1; @@ -118,6 +120,11 @@ midi_event_is_valid(const uint8_t* buffer, size_t len) if (size < 0 || (size_t)size != len) { return false; } + for (size_t i = 1; i < len; ++i) { + if ((buffer[i] & 0x80) != 0) { + return false; // Non-status byte has MSb set + } + } return true; } |