From c7d7680cd6b2c325ec8004d6262e1e9089f450fd Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Wed, 13 Mar 2024 23:23:31 -0700 Subject: [PATCH] Decoder must not write more bit than requested --- armsrc/em4x70.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/armsrc/em4x70.c b/armsrc/em4x70.c index 5e06a5570..2732c1405 100644 --- a/armsrc/em4x70.c +++ b/armsrc/em4x70.c @@ -687,11 +687,15 @@ static int em4x70_receive(uint8_t *bits, size_t length) { // pulse length 1.5 -> 2 bits + flip edge detection if (edge == FALLING_EDGE) { bits[bit_pos++] = 0; - bits[bit_pos++] = 0; + if (bit_pos < length) { + bits[bit_pos++] = 0; + } edge = RISING_EDGE; } else { bits[bit_pos++] = 1; - bits[bit_pos++] = 1; + if (bit_pos < length) { + bits[bit_pos++] = 1; + } edge = FALLING_EDGE; } @@ -700,10 +704,14 @@ static int em4x70_receive(uint8_t *bits, size_t length) { // pulse length of 2 -> two bits if (edge == FALLING_EDGE) { bits[bit_pos++] = 0; - bits[bit_pos++] = 1; + if (bit_pos < length) { + bits[bit_pos++] = 1; + } } else { bits[bit_pos++] = 1; - bits[bit_pos++] = 0; + if (bit_pos < length) { + bits[bit_pos++] = 0; + } } } else {