# HG changeset patch # User asl # Date 1164906232 0 # Node ID 9279e39bd38d752cdec6b0fd793cfb418c84459e # Parent 9ee188e11ee64bf35db77fb7d1cd56b65deea763 * src/load.c: Only call valid_address() if CYGSEM_REDBOOT_VALIDATE_USER_RAM_LOADS is enabled. diff --git a/packages/redboot/current/ChangeLog b/packages/redboot/current/ChangeLog --- a/packages/redboot/current/ChangeLog +++ b/packages/redboot/current/ChangeLog @@ -1,3 +1,8 @@ +2006-11-19 Andrew Lunn + + * src/load.c: Only call valid_address() if + CYGSEM_REDBOOT_VALIDATE_USER_RAM_LOADS is enabled. + 2006-09-06 Andrew Lunn * cdl/redboot.cdl: Fix description of CYGSEM_REDBOOT_DISK_IDE. diff --git a/packages/redboot/current/cdl/redboot.cdl b/packages/redboot/current/cdl/redboot.cdl --- a/packages/redboot/current/cdl/redboot.cdl +++ b/packages/redboot/current/cdl/redboot.cdl @@ -240,10 +240,13 @@ cdl_package CYGPKG_REDBOOT { cdl_option CYGBLD_REDBOOT_LOAD_INTO_FLASH { display "Allow the load-command write into Flash." default_value 0 - active_if CYGPKG_REDBOOT_FLASH + active_if CYGPKG_REDBOOT_FLASH + requires CYGSEM_REDBOOT_VALIDATE_USER_RAM_LOADS compile flash_load.c description " - Write images direct to Flash via the load command." + Write images direct to Flash via the load command. + We assume anything which is invalid RAM is flash, hence + the requires statement" } cdl_option CYGBLD_BUILD_REDBOOT_WITH_CKSUM { display "Include POSIX checksum command" diff --git a/packages/redboot/current/src/load.c b/packages/redboot/current/src/load.c --- a/packages/redboot/current/src/load.c +++ b/packages/redboot/current/src/load.c @@ -422,9 +422,11 @@ load_elf_image(getc_t getc, unsigned lon redboot_getc_terminate(true); return 0; } - if (valid_address(addr)) { +#ifdef CYGSEM_REDBOOT_VALIDATE_USER_RAM_LOADS + if (valid_address(addr)) +#endif *addr++ = ch; - } + #ifdef CYGBLD_REDBOOT_LOAD_INTO_FLASH else { flash_load_write(addr, ch); @@ -567,9 +569,11 @@ load_srec_image(getc_t getc, unsigned lo offset += count; while (count-- > 0) { val = _hex2(getc, 1, &sum); - if (valid_address(addr)) { +#ifdef CYGSEM_REDBOOT_VALIDATE_USER_RAM_LOADS + if (valid_address(addr)) +#endif *addr++ = val; - } + #ifdef CYGBLD_REDBOOT_LOAD_INTO_FLASH else { flash_load_write(addr, val);