Index: redboot/current/ChangeLog =================================================================== RCS file: /cvs/ecos/ecos/packages/redboot/current/ChangeLog,v retrieving revision 1.249 diff -u -r1.249 ChangeLog --- redboot/current/ChangeLog 6 Sep 2006 14:26:52 -0000 1.249 +++ redboot/current/ChangeLog 20 Nov 2006 23:11:49 -0000 @@ -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. Index: redboot/current/cdl/redboot.cdl =================================================================== RCS file: /cvs/ecos/ecos/packages/redboot/current/cdl/redboot.cdl,v retrieving revision 1.76 diff -u -r1.76 redboot.cdl --- redboot/current/cdl/redboot.cdl 6 Sep 2006 14:26:53 -0000 1.76 +++ redboot/current/cdl/redboot.cdl 20 Nov 2006 23:11:51 -0000 @@ -240,10 +240,13 @@ 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 anthing which is invalid RAM is flash, hence + the requires statement" } cdl_option CYGBLD_BUILD_REDBOOT_WITH_CKSUM { display "Include POSIX checksum command" Index: redboot/current/src/load.c =================================================================== RCS file: /cvs/ecos/ecos/packages/redboot/current/src/load.c,v retrieving revision 1.47 diff -u -r1.47 load.c --- redboot/current/src/load.c 20 Jul 2006 20:27:47 -0000 1.47 +++ redboot/current/src/load.c 20 Nov 2006 23:11:52 -0000 @@ -422,9 +422,11 @@ 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 @@ 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);