Fix #3033: Increase array bounds and test for overflow
This commit is contained in:
		| @@ -254,6 +254,7 @@ 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_LOG_DRV("  Jack %s %s descriptor \r\n", | ||||||
|                        tu_desc_subtype(p_desc) == MIDI_CS_INTERFACE_IN_JACK ? "IN" : "OUT", |                        tu_desc_subtype(p_desc) == MIDI_CS_INTERFACE_IN_JACK ? "IN" : "OUT", | ||||||
|                        p_desc[3] == MIDI_JACK_EXTERNAL ? "External" : "Embedded"); |                        p_desc[3] == MIDI_JACK_EXTERNAL ? "External" : "Embedded"); | ||||||
|  |             if (desc_cb.jack_num < TU_ARRAY_SIZE(desc_cb.desc_jack)) | ||||||
|                 desc_cb.desc_jack[desc_cb.jack_num++] = p_desc; |                 desc_cb.desc_jack[desc_cb.jack_num++] = p_desc; | ||||||
|             break; |             break; | ||||||
|           } |           } | ||||||
|   | |||||||
| @@ -69,7 +69,7 @@ typedef struct { | |||||||
|   const tusb_desc_endpoint_t* desc_epout; // endpoint OUT descriptor, CS_ENDPOINT is right after |   const tusb_desc_endpoint_t* desc_epout; // endpoint OUT descriptor, CS_ENDPOINT is right after | ||||||
|  |  | ||||||
|   uint8_t jack_num; |   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; | } tuh_midi_descriptor_cb_t; | ||||||
|  |  | ||||||
| typedef struct { | typedef struct { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 rppicomidi
					rppicomidi