usbip: fix stub_send_ret_submit() vulnerability to null transfer_buffer
stub_send_ret_submit() handles urb with a potential null transfer_buffer, when it replays a packet with potential malicious data that could contain a null buffer. Add a check for the condition when actual_length > 0 and transfer_buffer is null. Reported-by: Secunia Research <vuln@secunia.com> Cc: stable <stable@vger.kernel.org> Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Родитель
2f2d0088eb
Коммит
be6123df1e
|
@ -167,6 +167,13 @@ static int stub_send_ret_submit(struct stub_device *sdev)
|
||||||
memset(&pdu_header, 0, sizeof(pdu_header));
|
memset(&pdu_header, 0, sizeof(pdu_header));
|
||||||
memset(&msg, 0, sizeof(msg));
|
memset(&msg, 0, sizeof(msg));
|
||||||
|
|
||||||
|
if (urb->actual_length > 0 && !urb->transfer_buffer) {
|
||||||
|
dev_err(&sdev->udev->dev,
|
||||||
|
"urb: actual_length %d transfer_buffer null\n",
|
||||||
|
urb->actual_length);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
if (usb_pipetype(urb->pipe) == PIPE_ISOCHRONOUS)
|
if (usb_pipetype(urb->pipe) == PIPE_ISOCHRONOUS)
|
||||||
iovnum = 2 + urb->number_of_packets;
|
iovnum = 2 + urb->number_of_packets;
|
||||||
else
|
else
|
||||||
|
|
Загрузка…
Ссылка в новой задаче