Fix flash bounds check

This commit is contained in:
Kevin Thomas
2026-05-09 16:40:32 -04:00
parent 81a746346c
commit 8edeec2bd7
4 changed files with 42 additions and 12 deletions
@@ -123,6 +123,10 @@ static void flash_erase_program_ram(const FlashRomFns *fns, uint32_t offset,
void flash_write(uint32_t offset, const uint8_t *data, uint32_t len)
{
if (data == NULL || offset >= FLASH_SIZE)
return;
if (len > FLASH_SIZE - offset)
len = FLASH_SIZE - offset;
FlashRomFns fns;
lookup_rom_fns(&fns);
uint32_t primask;
@@ -134,6 +138,10 @@ void flash_write(uint32_t offset, const uint8_t *data, uint32_t len)
void flash_read(uint32_t offset, uint8_t *out, uint32_t len)
{
if (out == NULL || offset >= FLASH_SIZE)
return;
if (len > FLASH_SIZE - offset)
len = FLASH_SIZE - offset;
const uint8_t *src = (const uint8_t *)(XIP_BASE + offset);
for (uint32_t i = 0; i < len; i++)
out[i] = src[i];