From d950980535b7bb979a406f8a44885cb380cd4039 Mon Sep 17 00:00:00 2001 From: Tercio Gaudencio Filho Date: Sun, 27 Oct 2024 17:11:27 -0300 Subject: [PATCH] Fix issue #9. If MAX_PAYLOAD is 255, doesn't check for frame length. Currently length is limited to 255(uint8_t). --- target/min.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/target/min.c b/target/min.c index 3ac0f0d..36337c8 100644 --- a/target/min.c +++ b/target/min.c @@ -503,14 +503,15 @@ static void rx_byte(struct min_context *self, uint8_t byte) self->rx_control = byte; crc32_step(&self->rx_checksum, byte); if (self->rx_frame_length > 0) { + self->rx_frame_state = RECEIVING_PAYLOAD; +#if (MAX_PAYLOAD != 255) // Can reduce the RAM size by compiling limits to frame sizes - if (self->rx_frame_length <= MAX_PAYLOAD) { - self->rx_frame_state = RECEIVING_PAYLOAD; - } else { + if (self->rx_frame_length > MAX_PAYLOAD) { // Frame dropped because it's longer than any frame we can buffer min_debug_print("Dropping frame because length %d > MAX_PAYLOAD %d", self->rx_frame_length, MAX_PAYLOAD); self->rx_frame_state = SEARCHING_FOR_SOF; } +#endif } else { self->rx_frame_state = RECEIVING_CHECKSUM_3; }