Skip to content

Commit 0997f7c

Browse files
Merge pull request iNavFlight#11210 from VoodooChild99/fix-crsf-parsing
Verify frame length when handling CRSF_FRAMETYPE_MSP_REQ/CRSF_FRAMETYPE_MSP_WRITE
2 parents 86ae261 + 89526c5 commit 0997f7c

1 file changed

Lines changed: 7 additions & 3 deletions

File tree

src/main/rx/crsf.c

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -178,9 +178,13 @@ STATIC_UNIT_TESTED void crsfDataReceive(uint16_t c, void *rxCallbackData)
178178
#if defined(USE_MSP_OVER_TELEMETRY)
179179
case CRSF_FRAMETYPE_MSP_REQ:
180180
case CRSF_FRAMETYPE_MSP_WRITE: {
181-
uint8_t *frameStart = (uint8_t *)&crsfFrame.frame.payload + CRSF_FRAME_ORIGIN_DEST_SIZE;
182-
if (bufferCrsfMspFrame(frameStart, crsfFrame.frame.frameLength - 4)) {
183-
crsfScheduleMspResponse(crsfFrame.frame.payload[1]);
181+
if (crsfFrame.frame.frameLength >= 4) {
182+
uint8_t *frameStart = (uint8_t *)&crsfFrame.frame.payload + CRSF_FRAME_ORIGIN_DEST_SIZE;
183+
if (bufferCrsfMspFrame(frameStart, crsfFrame.frame.frameLength - 4)) {
184+
crsfScheduleMspResponse(crsfFrame.frame.payload[1]);
185+
}
186+
} else {
187+
crsfFrameDone = false;
184188
}
185189
break;
186190
}

0 commit comments

Comments
 (0)