mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-15 09:34:17 +00:00
USB: serial: fix potential heap buffer overflow
Make sure to verify the number of ports requested by subdriver to avoid writing beyond the end of fixed-size array in interface data. The current usb-serial implementation is limited to eight ports per interface but failed to verify that the number of ports requested by a subdriver (which could have been determined from device descriptors) did not exceed this limit. Cc: stable <stable@vger.kernel.org> Signed-off-by: Johan Hovold <johan@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
d979e9f9ec
commit
5654699fb3
@ -862,6 +862,11 @@ static int usb_serial_probe(struct usb_interface *interface,
|
||||
num_ports = type->num_ports;
|
||||
}
|
||||
|
||||
if (num_ports > MAX_NUM_PORTS) {
|
||||
dev_warn(ddev, "too many ports requested: %d\n", num_ports);
|
||||
num_ports = MAX_NUM_PORTS;
|
||||
}
|
||||
|
||||
serial->num_ports = num_ports;
|
||||
serial->num_bulk_in = num_bulk_in;
|
||||
serial->num_bulk_out = num_bulk_out;
|
||||
|
Loading…
x
Reference in New Issue
Block a user