From 73966739fb0d4977b02d653e1f8520e3d36ae628 Mon Sep 17 00:00:00 2001 From: Vandhiadevan Karunamoorthy Date: Tue, 2 Feb 2021 18:11:31 +0530 Subject: [PATCH] common: sf_command: Add ram region validation Signed-off-by: Vandhiadevan Karunamoorthy Change-Id: I36a48bae392388cfd565c6a351f01247959bb613 --- common/cmd_sf.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/common/cmd_sf.c b/common/cmd_sf.c index 69345dbf07..14fae9cc35 100644 --- a/common/cmd_sf.c +++ b/common/cmd_sf.c @@ -19,6 +19,8 @@ #include #include +DECLARE_GLOBAL_DATA_PTR; + static struct spi_flash *flash; /* @@ -265,6 +267,7 @@ static int do_spi_flash_read_write(int argc, char * const argv[]) int ret = 1; int dev = 0; loff_t offset, len, maxsize; + unsigned long sram_end = CONFIG_SYS_SDRAM_BASE + gd->ram_size; if (argc < 3) return -1; @@ -283,6 +286,16 @@ static int do_spi_flash_read_write(int argc, char * const argv[]) argv[0], flash->size); return 1; } + /* Validate DDR region address */ + if ((addr < CONFIG_SYS_SDRAM_BASE) || (addr > (sram_end - 1))) { + puts("Invalid RAM address \n"); + return 1; + } + + if ((addr + len) > sram_end) { + puts("No space available\n"); + return 1; + } buf = map_physmem(addr, len, MAP_WRBACK); if (!buf) {