USB: serial: mxuport: fix memory corruption with small endpoint
Subsystems (3)
Johan Hovold
maintainerPATCH 1/1 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 ee467a1f2066 ("USB: serial: add Moxa UPORT 12XX/14XX/16XX driver")
Cc [email protected] # 3.14
Cc Andrew Lunn <[email protected]>
Signed-off-by Johan Hovold <[email protected]>
--- drivers/usb/serial/mxuport.c | 8 ++++++++ 1 file changed, 8 insertions(+)
drivers/usb/serial/mxuport.c +8 -0
@@ -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 ];
Signature · 1 line
2.53.0
Quoted 34 lines · Johan Hovold
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 ee467a1f2066 ("USB: serial: add Moxa UPORT 12XX/14XX/16XX driver")Cc [email protected] # 3.14Cc Andrew Lunn <[email protected]>Signed-off-by Johan Hovold <[email protected]>--- drivers/usb/serial/mxuport.c | 8 ++++++++ 1 file changed, 8 insertions(+)drivers/usb/serial/mxuport.c +8
-0@@ -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 ];Signature · 1 line
2.53.0
Reviewed-by Greg Kroah-Hartman <[email protected]>