changeset 495:248ae32b58f8

Be quieter about out of range memory addresses - ask only once - from Patrick Doyle
author gthomas
date Mon, 13 Jan 2003 18:45:26 +0000
parents cffb2601409c
children 6c2a59f5102f
files packages/redboot/current/ChangeLog packages/redboot/current/src/load.c
diffstat 2 files changed, 11 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/packages/redboot/current/ChangeLog
+++ b/packages/redboot/current/ChangeLog
@@ -1,3 +1,9 @@
+2003-01-10  Patrick Doyle  <wpd@delcomsys.com>
+
+	* src/load.c (do_load): Don't abort and complain about overwriting
+	the end of RAM when loading raw data files and we already asked
+	the user if it was ok to write outside what we believe to be RAM.
+
 2002-12-31  Patrick Doyle  <wpd@delcomsys.com>
 
 	* src/decompress.c (gzip_close): Don't complain that decompression
--- a/packages/redboot/current/src/load.c
+++ b/packages/redboot/current/src/load.c
@@ -590,6 +590,9 @@ do_load(int argc, char *argv[])
     connection_info_t info;
     getc_io_funcs_t *io;
     struct load_io_entry *io_tab;
+#ifdef CYGSEM_REDBOOT_VALIDATE_USER_RAM_LOADS
+    bool spillover_ok = false;
+#endif
 
 #ifdef CYGPKG_REDBOOT_NETWORKING
     memset((char *)&host, 0, sizeof(host));
@@ -688,6 +691,7 @@ do_load(int argc, char *argv[])
          (base > (unsigned long)user_ram_end))) {
         if (!verify_action("Specified address (%p) is not believed to be in RAM", (void*)base))
             return;
+        spillover_ok = true;
     }
 #endif
     if (raw && !base_addr_set) {
@@ -711,7 +715,7 @@ do_load(int argc, char *argv[])
         err = 0;
         while ((res = redboot_getc()) >= 0) {
 #ifdef CYGSEM_REDBOOT_VALIDATE_USER_RAM_LOADS
-            if (mp >= user_ram_end) {
+            if (mp >= user_ram_end && !spillover_ok) {
                 // Only if there is no need to stop the download
                 // before printing output can we ask confirmation
                 // questions.