changeset 2329:9279e39bd38d

* src/load.c: Only call valid_address() if CYGSEM_REDBOOT_VALIDATE_USER_RAM_LOADS is enabled.
author asl
date Thu, 30 Nov 2006 17:03:52 +0000
parents 9ee188e11ee6
children 23bf56b48ddc
files packages/redboot/current/ChangeLog packages/redboot/current/cdl/redboot.cdl packages/redboot/current/src/load.c
diffstat 3 files changed, 18 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/packages/redboot/current/ChangeLog
+++ b/packages/redboot/current/ChangeLog
@@ -1,3 +1,8 @@
+2006-11-19  Andrew Lunn  <lunn@laptop.lunn.ch>
+
+	* src/load.c: Only call valid_address() if
+	CYGSEM_REDBOOT_VALIDATE_USER_RAM_LOADS is enabled.
+
 2006-09-06  Andrew Lunn  <andrew.lunn@ascom.ch>
 
 	* cdl/redboot.cdl: Fix description of CYGSEM_REDBOOT_DISK_IDE.
--- 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"
--- 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);