diff options
| author | Ha Thach <[email protected]> | 2025-03-21 22:56:16 +0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-03-21 22:56:16 +0700 |
| commit | cf76af1056e9a3019d9b08503b783a86602374f0 (patch) | |
| tree | 04d11d5e925354a2869d99a79bada16c3aa118b7 /src | |
| parent | c2924c51fc9bf0074663cafabf4399ca9d673750 (diff) | |
| parent | 3324a327cbd82d18305030ba2247cbbc71dc9f19 (diff) | |
Merge pull request #3042 from rppicomidi/fix_3033
Fix #3033: Increase array bounds and test for overflow
Diffstat (limited to 'src')
| -rw-r--r-- | src/class/midi/midi_host.c | 6 | ||||
| -rw-r--r-- | src/class/midi/midi_host.h | 2 |
2 files changed, 5 insertions, 3 deletions
diff --git a/src/class/midi/midi_host.c b/src/class/midi/midi_host.c index cfea0c080..cd6e115ee 100644 --- a/src/class/midi/midi_host.c +++ b/src/class/midi/midi_host.c @@ -254,7 +254,9 @@ bool midih_open(uint8_t rhport, uint8_t dev_addr, tusb_desc_interface_t const *d TU_LOG_DRV(" Jack %s %s descriptor \r\n", tu_desc_subtype(p_desc) == MIDI_CS_INTERFACE_IN_JACK ? "IN" : "OUT", p_desc[3] == MIDI_JACK_EXTERNAL ? "External" : "Embedded"); - desc_cb.desc_jack[desc_cb.jack_num++] = p_desc; + if (desc_cb.jack_num < TU_ARRAY_SIZE(desc_cb.desc_jack)) { + desc_cb.desc_jack[desc_cb.jack_num++] = p_desc; + } break; } @@ -590,8 +592,8 @@ uint32_t tuh_midi_stream_read(uint8_t idx, uint8_t *p_cable_num, uint8_t *p_buff break; default: break; - cable_sysex_in_progress &= (uint16_t) ~cable_mask; } + cable_sysex_in_progress &= (uint16_t) ~cable_mask; } else { // Real-time message: can be inserted into a sysex message, // so do don't clear cable_sysex_in_progress bit diff --git a/src/class/midi/midi_host.h b/src/class/midi/midi_host.h index 67df25a82..06554a03d 100644 --- a/src/class/midi/midi_host.h +++ b/src/class/midi/midi_host.h @@ -69,7 +69,7 @@ typedef struct { const tusb_desc_endpoint_t* desc_epout; // endpoint OUT descriptor, CS_ENDPOINT is right after uint8_t jack_num; - const uint8_t* desc_jack[16]; // list of jack descriptors (embedded + external) + const uint8_t* desc_jack[32]; // list of jack descriptors (embedded + external) } tuh_midi_descriptor_cb_t; typedef struct { |
