From f07217c9e2912af5b2f05d61829f62cc865b481f Mon Sep 17 00:00:00 2001
From: Wolfgang Denk <wd@pollux.denx.de>
Date: Sun, 12 Mar 2006 23:27:46 +0100
Subject: [PATCH] Fix array overflow with fw_setenv on uninitialised
 environment Patch by Murray Jensen, 15 Jul 2005

---
 CHANGELOG          | 3 +++
 tools/env/fw_env.c | 6 ++----
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 790b391d553..51efb237fbd 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -2,6 +2,9 @@
 Changes since U-Boot 1.1.4:
 ======================================================================
 
+* Fix array overflow with fw_setenv on uninitialised environment
+  Patch by Murray Jensen, 15 Jul 2005
+
 * Add support for EmbeddedPlanet EP88x boards
   Patch by Yuli Barcohen, 13 Jul 2005
 
diff --git a/tools/env/fw_env.c b/tools/env/fw_env.c
index 74c0498d5a6..f723b5bca1d 100644
--- a/tools/env/fw_env.c
+++ b/tools/env/fw_env.c
@@ -614,8 +614,7 @@ static int env_init (void)
 		if (!crc1_ok) {
 			fprintf (stderr,
 				"Warning: Bad CRC, using default environment\n");
-			environment.data = default_environment;
-			free (addr1);
+			memcpy(environment.data, default_environment, sizeof default_environment);
 		}
 	} else {
 		flag1 = environment.flags;
@@ -652,9 +651,8 @@ static int env_init (void)
 		} else if (!crc1_ok && !crc2_ok) {
 			fprintf (stderr,
 				"Warning: Bad CRC, using default environment\n");
-			environment.data = default_environment;
+			memcpy(environment.data, default_environment, sizeof default_environment);
 			curdev = 0;
-			free (addr2);
 			free (addr1);
 		} else if (flag1 == active_flag && flag2 == obsolete_flag) {
 			environment.data = addr1;
-- 
GitLab