- size = usb_size(size, setup_packet.wLength);
- __usb_ep_write(ep_num, buffer, size,
- USB_StatusHandler);
+ size = usb_size(size, usb_le16_to_cpu(setup_packet.wLength));
+ if (UNLIKELY(size > max_size))
+ {
+ LOG_ERR("%s: ep_buffer exceeded, try to enlarge CONFIG_USB_BUFSIZE\n",
+ __func__);
+ ASSERT(0);
+ return -USB_BUF_OVERFLOW;
+ }
+ if (!size)
+ usb_status_handler(ep_num);
+ else
+ {
+ memcpy(ep_buffer[ep_num], buffer, size);
+ __usb_ep_write(ep_num, ep_buffer[ep_num], size,
+ usb_status_handler);
+ }