cardem: Fix infinite loop + watchdog reset on long OUT message

In dispatch_received_usb_msg(), we ran into an infinite loop if a
too long messages was received on the OUT EP.  Let's break the loop.

Change-Id: I5325ed15d3dd79a42f8dac34d618e86b9334c301
Closes: OS#4429
This commit is contained in:
Harald Welte
2020-03-01 15:56:07 +01:00
committed by laforge
parent 37220cce25
commit e6806e58c2

View File

@@ -682,6 +682,7 @@ static void dispatch_received_msg(struct msgb *msg, struct cardem_inst *ci)
TRACE_ERROR("%u: Unexpected large message (%u bytes)\n", TRACE_ERROR("%u: Unexpected large message (%u bytes)\n",
ci->num, mh->msg_len); ci->num, mh->msg_len);
usb_buf_free(segm); usb_buf_free(segm);
break;
} else { } else {
uint8_t *cur = msgb_put(segm, mh->msg_len); uint8_t *cur = msgb_put(segm, mh->msg_len);
segm->l1h = segm->head; segm->l1h = segm->head;