Bluetooth: fix division by zero in send path
Subsystems (3)
PATCH 1/1 Bluetooth: fix division by zero in send path
Add the missing bulk-out endpoint sanity check to probe() to avoid division by zero in bfusb_send_frame() in case a malicious device has broken descriptors (or when doing descriptor fuzz testing).
Note that USB core will reject URBs submitted for endpoints with zero wMaxPacketSize but that drivers doing packet-size calculations still need to handle this (cf. commit 2548288b4fb0 ("USB: Fix: Don't skip endpoint descriptors with maxpacket=0")).
--- drivers/bluetooth/bfusb.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/bluetooth/bfusb.c +2 -0
@@ -627,6 +627,8 @@ static int bfusb_probe(struct usb_interface *intf, const struct usb_device_id *i data->bulk_in_ep = bulk_in_ep->desc.bEndpointAddress; data->bulk_out_ep = bulk_out_ep->desc.bEndpointAddress; data->bulk_pkt_size =le16_to_cpu (bulk_out_ep->desc.wMaxPacketSize); +if (!data->bulk_pkt_size) + goto done;rwlock_init (&data->lock);
Signature · 1 line
2.32.0
Marcel Holtmann
maintainerHi Johan,
Quoted 9 lines
Add the missing bulk-out endpoint sanity check to
probe()to avoid division by zero inbfusb_send_frame()in case a malicious device has broken descriptors (or when doing descriptor fuzz testing).Note that USB core will reject URBs submitted for endpoints with zero wMaxPacketSize but that drivers doing packet-size calculations still need to handle this (cf. commit
2548288b4fb0("USB: Fix: Don't skip endpoint descriptors with maxpacket=0")).
Quoted 5 lines
Signed-off-by Johan Hovold <[email protected]>---
drivers/bluetooth/bfusb.c| 2 ++1 file changed, 2 insertions(+)
patch has been applied to bluetooth-next tree.
Regards
Marcel