mirror of
https://github.com/torvalds/linux.git
synced 2026-06-04 12:35:52 +02:00
USB: serial: mxuport: fix memory corruption with small endpoint
Make sure that the bulk-out endpoint max packet size is at least eight
bytes to avoid user-controlled slab corruption should a malicious device
report a smaller size.
Fixes: ee467a1f20 ("USB: serial: add Moxa UPORT 12XX/14XX/16XX driver")
Cc: stable@vger.kernel.org # 3.14
Cc: Andrew Lunn <andrew@lunn.ch>
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Johan Hovold <johan@kernel.org>
This commit is contained in:
parent
e1a9d791fd
commit
4085f0dbb1
|
|
@ -962,6 +962,14 @@ static int mxuport_calc_num_ports(struct usb_serial *serial,
|
|||
*/
|
||||
BUILD_BUG_ON(ARRAY_SIZE(epds->bulk_out) < 16);
|
||||
|
||||
/*
|
||||
* The bulk-out buffers must be large enough for the four-byte header
|
||||
* (and following data), but assume anything smaller than eight bytes
|
||||
* is broken.
|
||||
*/
|
||||
if (usb_endpoint_maxp(epds->bulk_out[0]) < 8)
|
||||
return -EINVAL;
|
||||
|
||||
for (i = 1; i < num_ports; ++i)
|
||||
epds->bulk_out[i] = epds->bulk_out[0];
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user