mirror of
https://github.com/tillitis/tillitis-key1.git
synced 2025-09-21 05:14:38 -04:00
ch552: Fix FIDO data copy
Fix potential out of bounds write.
This commit is contained in:
parent
ec9ef31140
commit
14e4cd09c9
1 changed files with 5 additions and 4 deletions
|
@ -1687,18 +1687,19 @@ void main()
|
||||||
// Copy FIDO data from UartRxBuf to FrameBuf
|
// Copy FIDO data from UartRxBuf to FrameBuf
|
||||||
if (FrameStarted && !FrameDiscard && !FidoDataAvailable) {
|
if (FrameStarted && !FrameDiscard && !FidoDataAvailable) {
|
||||||
if (FrameMode == IO_FIDO) {
|
if (FrameMode == IO_FIDO) {
|
||||||
// Check if a complete frame has been received
|
if ((FrameRemainingBytes >= MAX_FRAME_SIZE) &&
|
||||||
if (UartRxBufByteCount >= FrameRemainingBytes) {
|
(UartRxBufByteCount >= MAX_FRAME_SIZE)) {
|
||||||
circular_copy(FrameBuf,
|
circular_copy(FrameBuf,
|
||||||
UartRxBuf,
|
UartRxBuf,
|
||||||
UART_RX_BUF_SIZE,
|
UART_RX_BUF_SIZE,
|
||||||
UartRxBufOutputPointer,
|
UartRxBufOutputPointer,
|
||||||
FrameRemainingBytes);
|
MAX_FRAME_SIZE);
|
||||||
FrameBufLength = MAX_FRAME_SIZE;
|
FrameBufLength = MAX_FRAME_SIZE;
|
||||||
// Update output pointer
|
// Update output pointer
|
||||||
UartRxBufOutputPointer = increment_pointer(UartRxBufOutputPointer,
|
UartRxBufOutputPointer = increment_pointer(UartRxBufOutputPointer,
|
||||||
FrameRemainingBytes,
|
MAX_FRAME_SIZE,
|
||||||
UART_RX_BUF_SIZE);
|
UART_RX_BUF_SIZE);
|
||||||
|
FrameRemainingBytes -= MAX_FRAME_SIZE;
|
||||||
FidoDataAvailable = 1;
|
FidoDataAvailable = 1;
|
||||||
cts_start();
|
cts_start();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue