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:
Johan Hovold 2026-05-22 16:19:50 +02:00
parent e1a9d791fd
commit 4085f0dbb1

View File

@ -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];