mirror of https://github.com/PCSX2/pcsx2.git
USB: Fix possible buffer overflow in webcam
This commit is contained in:
parent
e5bb405b47
commit
c5a2844367
|
@ -273,7 +273,7 @@ namespace usb_eyetoy
|
||||||
static void webcam_handle_data_eyetoy(USBDevice* dev, USBPacket* p)
|
static void webcam_handle_data_eyetoy(USBDevice* dev, USBPacket* p)
|
||||||
{
|
{
|
||||||
EYETOYState* s = USB_CONTAINER_OF(dev, EYETOYState, dev);
|
EYETOYState* s = USB_CONTAINER_OF(dev, EYETOYState, dev);
|
||||||
static const int max_ep_size = 896;
|
static const unsigned int max_ep_size = 896;
|
||||||
uint8_t devep = p->ep->nr;
|
uint8_t devep = p->ep->nr;
|
||||||
|
|
||||||
if (!s->hw_camera_running)
|
if (!s->hw_camera_running)
|
||||||
|
@ -326,7 +326,7 @@ namespace usb_eyetoy
|
||||||
s->frame_step = 0;
|
s->frame_step = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
usb_packet_copy(p, data, max_ep_size);
|
usb_packet_copy(p, data, std::min(max_ep_size, p->buffer_size));
|
||||||
}
|
}
|
||||||
else if (devep == 2)
|
else if (devep == 2)
|
||||||
{
|
{
|
||||||
|
@ -346,7 +346,7 @@ namespace usb_eyetoy
|
||||||
static void webcam_handle_data_ov511p(USBDevice* dev, USBPacket* p)
|
static void webcam_handle_data_ov511p(USBDevice* dev, USBPacket* p)
|
||||||
{
|
{
|
||||||
EYETOYState* s = USB_CONTAINER_OF(dev, EYETOYState, dev);
|
EYETOYState* s = USB_CONTAINER_OF(dev, EYETOYState, dev);
|
||||||
static const int max_ep_size = 960; // 961
|
static const unsigned int max_ep_size = 960; // 961
|
||||||
uint8_t devep = p->ep->nr;
|
uint8_t devep = p->ep->nr;
|
||||||
|
|
||||||
if (!s->hw_camera_running)
|
if (!s->hw_camera_running)
|
||||||
|
@ -397,7 +397,7 @@ namespace usb_eyetoy
|
||||||
s->frame_step = 0;
|
s->frame_step = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
usb_packet_copy(p, data, max_ep_size);
|
usb_packet_copy(p, data, std::min(max_ep_size, p->buffer_size));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case USB_TOKEN_OUT:
|
case USB_TOKEN_OUT:
|
||||||
|
|
Loading…
Reference in New Issue