mirror of
https://github.com/iNavFlight/inav.git
synced 2025-07-25 09:16:01 +03:00
Merge pull request #9407 from iNavFlight/dzikuvx-fix-jeti-buffer-overflow
Fix JETI EXBUS overflow
This commit is contained in:
commit
183e1e5eb9
1 changed files with 12 additions and 0 deletions
|
@ -158,6 +158,7 @@ static void jetiExBusDataReceive(uint16_t c, void *data)
|
|||
|
||||
static timeUs_t jetiExBusTimeLast = 0;
|
||||
static uint8_t *jetiExBusFrame;
|
||||
static uint8_t jetiExBusFrameMaxSize;
|
||||
const timeUs_t now = microsISR();
|
||||
|
||||
// Check if we shall reset frame position due to time
|
||||
|
@ -174,11 +175,13 @@ static void jetiExBusDataReceive(uint16_t c, void *data)
|
|||
case EXBUS_START_CHANNEL_FRAME:
|
||||
jetiExBusFrameState = EXBUS_STATE_IN_PROGRESS;
|
||||
jetiExBusFrame = jetiExBusChannelFrame;
|
||||
jetiExBusFrameMaxSize = EXBUS_MAX_CHANNEL_FRAME_SIZE;
|
||||
break;
|
||||
|
||||
case EXBUS_START_REQUEST_FRAME:
|
||||
jetiExBusRequestState = EXBUS_STATE_IN_PROGRESS;
|
||||
jetiExBusFrame = jetiExBusRequestFrame;
|
||||
jetiExBusFrameMaxSize = EXBUS_MAX_CHANNEL_FRAME_SIZE;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -186,6 +189,15 @@ static void jetiExBusDataReceive(uint16_t c, void *data)
|
|||
}
|
||||
}
|
||||
|
||||
if (jetiExBusFramePosition == jetiExBusFrameMaxSize) {
|
||||
// frame overrun
|
||||
jetiExBusFrameReset();
|
||||
jetiExBusFrameState = EXBUS_STATE_ZERO;
|
||||
jetiExBusRequestState = EXBUS_STATE_ZERO;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// Store in frame copy
|
||||
jetiExBusFrame[jetiExBusFramePosition] = (uint8_t)c;
|
||||
jetiExBusFramePosition++;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue