Skip to content

Commit 35a2633

Browse files
finikorgjukkar
authored andcommitted
usb: netusb: Fix handling no data case
In a case we get packet without fragments return -ENODATA. The bug was discovered by Coverity. Fixes #4637 Coverity-CID: 178334 Signed-off-by: Andrei Emeltchenko <[email protected]>
1 parent 9072123 commit 35a2633

File tree

1 file changed

+18
-25
lines changed

1 file changed

+18
-25
lines changed

subsys/usb/class/netusb/function_ecm.c

Lines changed: 18 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -233,41 +233,34 @@ int ecm_send(struct net_pkt *pkt)
233233
{
234234
u8_t send_buf[CONFIG_CDC_ECM_BULK_EP_MPS];
235235
int remaining = sizeof(send_buf);
236+
struct net_buf *frag;
236237

237238
net_hexdump_frags("<", pkt);
238239

239240
if (!pkt->frags) {
240-
remaining = append_bytes(send_buf, sizeof(send_buf),
241-
net_pkt_ll(pkt),
242-
net_pkt_ll_reserve(pkt),
243-
remaining);
244-
if (remaining < 0) {
245-
return remaining;
246-
}
247-
} else {
248-
struct net_buf *frag;
241+
return -ENODATA;
242+
}
243+
244+
remaining = append_bytes(send_buf, sizeof(send_buf),
245+
net_pkt_ll(pkt),
246+
net_pkt_ll_reserve(pkt) +
247+
pkt->frags->len,
248+
remaining);
249+
if (remaining < 0) {
250+
return remaining;
251+
}
249252

253+
for (frag = pkt->frags->frags; frag; frag = frag->frags) {
254+
#if VERBOSE_DEBUG
255+
SYS_LOG_DBG("Fragment %p len %u, remaining %u",
256+
frag, frag->len, remaining);
257+
#endif
250258
remaining = append_bytes(send_buf, sizeof(send_buf),
251-
net_pkt_ll(pkt),
252-
net_pkt_ll_reserve(pkt) +
253-
pkt->frags->len,
259+
frag->data, frag->len,
254260
remaining);
255261
if (remaining < 0) {
256262
return remaining;
257263
}
258-
259-
for (frag = pkt->frags->frags; frag; frag = frag->frags) {
260-
#if VERBOSE_DEBUG
261-
SYS_LOG_DBG("Fragment %p len %u, remaining %u",
262-
frag, frag->len, remaining);
263-
#endif
264-
remaining = append_bytes(send_buf, sizeof(send_buf),
265-
frag->data, frag->len,
266-
remaining);
267-
if (remaining < 0) {
268-
return remaining;
269-
}
270-
}
271264
}
272265

273266
if (remaining > 0 && remaining < sizeof(send_buf)) {

0 commit comments

Comments
 (0)