diff --git a/src/main/rx/crsf.c b/src/main/rx/crsf.c index 6ac184b9c66..f144ef45068 100755 --- a/src/main/rx/crsf.c +++ b/src/main/rx/crsf.c @@ -173,9 +173,13 @@ STATIC_UNIT_TESTED void crsfDataReceive(uint16_t c, void *rxCallbackData) #if defined(USE_MSP_OVER_TELEMETRY) case CRSF_FRAMETYPE_MSP_REQ: case CRSF_FRAMETYPE_MSP_WRITE: { - uint8_t *frameStart = (uint8_t *)&crsfFrame.frame.payload + CRSF_FRAME_ORIGIN_DEST_SIZE; - if (bufferCrsfMspFrame(frameStart, crsfFrame.frame.frameLength - 4)) { - crsfScheduleMspResponse(crsfFrame.frame.payload[1]); + if (crsfFrame.frame.frameLength >= 4) { + uint8_t *frameStart = (uint8_t *)&crsfFrame.frame.payload + CRSF_FRAME_ORIGIN_DEST_SIZE; + if (bufferCrsfMspFrame(frameStart, crsfFrame.frame.frameLength - 4)) { + crsfScheduleMspResponse(crsfFrame.frame.payload[1]); + } + } else { + crsfFrameDone = false; } break; }