patch "usbip: fix vudc_rx: harden CMD_SUBMIT path to handle malicious input" added to usb-linus
Subsystems (3)
This is a note to let you know that I've just added the patch titled
usbip: fix vudc_rx: harden CMD_SUBMIT path to handle malicious input
to my usb git tree which can be found at
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git
in the usb-linus branch.
The patch will show up in the next release of the linux-next tree (usually sometime within the next 24 hours during the week.)
The patch will hopefully also be merged in Linus's tree for the next -rc kernel release.
If you have any questions about this process, please let me know.
Quoted 1 line
From
b78d830f0049ef1966dc1e0ebd1ec2a594e2cf25Mon Sep 17 00:00:00 2001
From: Shuah Khan <[email protected]>
Date: Fri, 22 Dec 2017 19:23:46 -0700
Subject: usbip: fix vudc_rx: harden CMD_SUBMIT path to handle malicious input
Harden CMD_SUBMIT path to handle malicious input that could trigger large memory allocations. Add checks to validate transfer_buffer_length and number_of_packets to protect against bad input requesting for unbounded memory allocations.
--- drivers/usb/usbip/vudc_rx.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+)
drivers/usb/usbip/vudc_rx.c +19 -0
@@ -120,6 +120,25 @@ static int v_recv_cmd_submit(struct vudc *udc, urb_p->new =1 ; urb_p->seqnum = pdu->base.seqnum; +if (urb_p->ep->type ==USB_ENDPOINT_XFER_ISOC ) { +/* validate packet size and number of packets */ +unsigned int maxp, packets, bytes; + + maxp =usb_endpoint_maxp (urb_p->ep->desc); + maxp *=usb_endpoint_maxp_mult (urb_p->ep->desc); + bytes = pdu->u.cmd_submit.transfer_buffer_length; + packets =DIV_ROUND_UP (bytes, maxp); + +if (pdu->u.cmd_submit.number_of_packets <0 || + pdu->u.cmd_submit.number_of_packets > packets) { +dev_err (&udc->gadget.dev, +"CMD_SUBMIT: isoc invalid num packets %d\n" , + pdu->u.cmd_submit.number_of_packets); + ret = -EMSGSIZE ; + goto free_urbp; + } + } + ret =alloc_urb_from_cmd (&urb_p->urb, pdu, urb_p->ep->type);if (ret) {usbip_event_add (&udc->ud,VUDC_EVENT_ERROR_MALLOC );
Signature · 1 line
2.15.1