Skip to content

Commit 269b3c9

Browse files
committed
drivers/slipdev: fix off-by-one error in _recv()
1 parent d704a1a commit 269b3c9

1 file changed

Lines changed: 7 additions & 4 deletions

File tree

drivers/slipdev/slipdev.c

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -201,16 +201,19 @@ static int _recv(netdev_t *netdev, void *buf, size_t len, void *info)
201201
/* something went wrong, return error */
202202
return -EIO;
203203
}
204-
tmp = slipdev_unstuff_readbyte(ptr, byte, &escaped);
205-
ptr += tmp;
206-
res += tmp;
207-
if ((unsigned)res > len) {
204+
205+
/* frame is larger than expected - lost end marker */
206+
if ((unsigned)res >= len) {
208207
while (byte != SLIPDEV_END) {
209208
/* clear out unreceived packet */
210209
byte = tsrb_get_one(&dev->inbuf);
211210
}
212211
return -ENOBUFS;
213212
}
213+
214+
tmp = slipdev_unstuff_readbyte(ptr, byte, &escaped);
215+
ptr += tmp;
216+
res += tmp;
214217
} while (byte != SLIPDEV_END);
215218

216219
if (++dev->rx_done != dev->rx_queued) {

0 commit comments

Comments
 (0)