Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d0ef6ece authored by Johan Hovold's avatar Johan Hovold Committed by Greg Kroah-Hartman
Browse files

USB: serial: io_ti: fix information leak in completion handler



commit 654b404f2a222f918af9b0cd18ad469d0c941a8e upstream.

Add missing sanity check to the bulk-in completion handler to avoid an
integer underflow that can be triggered by a malicious device.

This avoids leaking 128 kB of memory content from after the URB transfer
buffer to user space.

Fixes: 8c209e67 ("USB: make actual_length in struct urb field u32")
Fixes: 1da177e4 ("Linux-2.6.12-rc2")
Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 449b0bb2
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1761,7 +1761,7 @@ static void edge_bulk_in_callback(struct urb *urb)

	port_number = edge_port->port->port_number;

	if (edge_port->lsr_event) {
	if (urb->actual_length > 0 && edge_port->lsr_event) {
		edge_port->lsr_event = 0;
		dev_dbg(dev, "%s ===== Port %u LSR Status = %02x, Data = %02x ======\n",
			__func__, port_number, edge_port->lsr_mask, *data);