From 435ca1c4412a00bc83f7f688f6f463f34a860a6d Mon Sep 17 00:00:00 2001 From: Wolfvak Date: Thu, 17 Dec 2020 13:44:29 -0300 Subject: [PATCH] Fix uninitialized variable on unaligned SPI Xfer We use a stack-allocated u32 to store a temporary word that gets memcpy'd from a potentially unaligned buffer, but the size of the copy could be less than 4 bytes, therefore leaving garbage in the upper bits of said word. This fixes CODEC in Corgi3DS. --- common/spi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/spi.c b/common/spi.c index 1a49f22..e06616f 100755 --- a/common/spi.c +++ b/common/spi.c @@ -103,7 +103,7 @@ static void SPI_SingleXfer(u32 reg, u32 bus, void *buffer, u32 len, bool read) u32 tmp = REG_SPI(bus, REG_SPI_FIFO); memcpy((u8 *) buffer + pos, &tmp, min(4, len - pos)); } else { - u32 tmp; + u32 tmp = 0; memcpy(&tmp, (u8 *) buffer + pos, min(4, len - pos)); REG_SPI(bus, REG_SPI_FIFO) = tmp; }