ch552: Fix FIDO data copy

Fix potential out of bounds write.
This commit is contained in:
Jonas Thörnblad 2025-05-06 12:53:12 +02:00
parent ec9ef31140
commit 14e4cd09c9
No known key found for this signature in database
GPG key ID: 2D318AD00A326F95

View file

@ -1687,18 +1687,19 @@ void main()
// Copy FIDO data from UartRxBuf to FrameBuf
if (FrameStarted && !FrameDiscard && !FidoDataAvailable) {
if (FrameMode == IO_FIDO) {
// Check if a complete frame has been received
if (UartRxBufByteCount >= FrameRemainingBytes) {
if ((FrameRemainingBytes >= MAX_FRAME_SIZE) &&
(UartRxBufByteCount >= MAX_FRAME_SIZE)) {
circular_copy(FrameBuf,
UartRxBuf,
UART_RX_BUF_SIZE,
UartRxBufOutputPointer,
FrameRemainingBytes);
MAX_FRAME_SIZE);
FrameBufLength = MAX_FRAME_SIZE;
// Update output pointer
UartRxBufOutputPointer = increment_pointer(UartRxBufOutputPointer,
FrameRemainingBytes,
MAX_FRAME_SIZE,
UART_RX_BUF_SIZE);
FrameRemainingBytes -= MAX_FRAME_SIZE;
FidoDataAvailable = 1;
cts_start();
}