From 3bc6408bbe77b76ced68bb7711da9106ba535a55 Mon Sep 17 00:00:00 2001 From: Aidan MacDonald Date: Fri, 30 Sep 2022 10:49:39 +0100 Subject: lcd: Fix incorrect use of LCD_STRIDEFORMAT for remote LCDs The get_address_fn implementations for some remote LCDs were checking LCD_STRIDEFORMAT unconditionally, but that macro is only valid for the main LCD. The remote LCD code only supports horizontal strides, so when compiling for a remote LCD, force the use of horizontal stride addressing. This fixes a buffer overflow and out of bounds write that occurs with the M:Robe 500 remote LCD. (Tested with sim + ASan only.) Change-Id: I99c6aa11d38f5105b096fc448948b9ec1b27dfe6 --- firmware/drivers/lcd-1bit-vert.c | 2 +- firmware/drivers/lcd-2bit-vi.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'firmware/drivers') diff --git a/firmware/drivers/lcd-1bit-vert.c b/firmware/drivers/lcd-1bit-vert.c index e574d4c191..49c15c041e 100644 --- a/firmware/drivers/lcd-1bit-vert.c +++ b/firmware/drivers/lcd-1bit-vert.c @@ -83,7 +83,7 @@ static void *LCDFN(frameaddress_default)(int x, int y) { /* the default expects a buffer the same size as the screen */ struct frame_buffer_t *fb = CURRENT_VP->buffer; -#if LCD_STRIDEFORMAT == VERTICAL_STRIDE +#if defined(MAIN_LCD) && LCD_STRIDEFORMAT == VERTICAL_STRIDE size_t element = (x * LCDM(NATIVE_STRIDE)(fb->stride)) + y; #else size_t element = (y * LCDM(NATIVE_STRIDE)(fb->stride)) + x; diff --git a/firmware/drivers/lcd-2bit-vi.c b/firmware/drivers/lcd-2bit-vi.c index 0bcf60767e..0580705a05 100644 --- a/firmware/drivers/lcd-2bit-vi.c +++ b/firmware/drivers/lcd-2bit-vi.c @@ -95,7 +95,7 @@ static void *LCDFN(frameaddress_default)(int x, int y) { /* the default expects a buffer the same size as the screen */ struct frame_buffer_t *fb = CURRENT_VP->buffer; -#if LCD_STRIDEFORMAT == VERTICAL_STRIDE +#if defined(MAIN_LCD) && LCD_STRIDEFORMAT == VERTICAL_STRIDE size_t element = (x * LCDM(NATIVE_STRIDE)(fb->stride)) + y; #else size_t element = (y * LCDM(NATIVE_STRIDE)(fb->stride)) + x; -- cgit v1.2.3