usb: usb_dc_native_posix: Check return values in dc_write()
Fixes coverity issue: Fixes #20836 Fixes #20837 Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
This commit is contained in:
parent
959b833f91
commit
5b22c88184
3 changed files with 17 additions and 7 deletions
|
@ -351,8 +351,13 @@ int usb_dc_ep_write(const u8_t ep, const u8_t *const data,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (USBIP_EP_ADDR2IDX(ep) == 0) {
|
if (USBIP_EP_ADDR2IDX(ep) == 0) {
|
||||||
usbip_send_common(ep, data_len);
|
if (!usbip_send_common(ep, data_len)) {
|
||||||
usbip_send(ep, data, data_len);
|
return -EIO;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (usbip_send(ep, data, data_len) != data_len) {
|
||||||
|
return -EIO;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
u8_t ep_idx = USBIP_EP_ADDR2IDX(ep);
|
u8_t ep_idx = USBIP_EP_ADDR2IDX(ep);
|
||||||
struct usb_ep_ctrl_prv *ctrl = &usbip_ctrl.in_ep_ctrl[ep_idx];
|
struct usb_ep_ctrl_prv *ctrl = &usbip_ctrl.in_ep_ctrl[ep_idx];
|
||||||
|
@ -524,7 +529,6 @@ int handle_usb_data(struct usbip_header *hdr)
|
||||||
{
|
{
|
||||||
u8_t ep_idx = ntohl(hdr->common.ep);
|
u8_t ep_idx = ntohl(hdr->common.ep);
|
||||||
usb_dc_ep_callback ep_cb;
|
usb_dc_ep_callback ep_cb;
|
||||||
int bytes;
|
|
||||||
u8_t ep;
|
u8_t ep;
|
||||||
|
|
||||||
LOG_DBG("ep_idx %u", ep_idx);
|
LOG_DBG("ep_idx %u", ep_idx);
|
||||||
|
@ -540,7 +544,9 @@ int handle_usb_data(struct usbip_header *hdr)
|
||||||
ep_cb(ep, USB_DC_EP_DATA_OUT);
|
ep_cb(ep, USB_DC_EP_DATA_OUT);
|
||||||
|
|
||||||
/* Send ACK reply */
|
/* Send ACK reply */
|
||||||
bytes = usbip_send_common(ep, 0);
|
if (!usbip_send_common(ep, 0)) {
|
||||||
|
return -EIO;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if (ep_idx >= USBIP_IN_EP_NUM) {
|
if (ep_idx >= USBIP_IN_EP_NUM) {
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
|
@ -437,7 +437,7 @@ int usbip_send(u8_t ep, const u8_t *data, size_t len)
|
||||||
return send(connfd_global, data, len, 0);
|
return send(connfd_global, data, len, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
int usbip_send_common(u8_t ep, u32_t data_len)
|
bool usbip_send_common(u8_t ep, u32_t data_len)
|
||||||
{
|
{
|
||||||
struct usbip_submit_rsp rsp;
|
struct usbip_submit_rsp rsp;
|
||||||
|
|
||||||
|
@ -455,5 +455,9 @@ int usbip_send_common(u8_t ep, u32_t data_len)
|
||||||
|
|
||||||
rsp.setup = htonl(0);
|
rsp.setup = htonl(0);
|
||||||
|
|
||||||
return usbip_send(ep, (u8_t *)&rsp, sizeof(rsp));
|
if (usbip_send(ep, (u8_t *)&rsp, sizeof(rsp)) == sizeof(rsp)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -97,7 +97,7 @@ struct usbip_header {
|
||||||
/* Function definitions */
|
/* Function definitions */
|
||||||
|
|
||||||
int usbip_recv(u8_t *buf, size_t len);
|
int usbip_recv(u8_t *buf, size_t len);
|
||||||
int usbip_send_common(u8_t ep, u32_t data_len);
|
bool usbip_send_common(u8_t ep, u32_t data_len);
|
||||||
int usbip_send(u8_t ep, const u8_t *data, size_t len);
|
int usbip_send(u8_t ep, const u8_t *data, size_t len);
|
||||||
|
|
||||||
void usbip_start(void);
|
void usbip_start(void);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue