aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Hobi <daniel.hobi@schmid-telecom.ch>2011-05-18 15:21:08 +0200
committerScott Wood <scottwood@freescale.com>2011-05-24 16:08:44 -0500
commit3b250ffb4113fe521a71c0a8b30340cf237c2508 (patch)
tree99e0808ff5f45630e3cc763bb18a32a9ae4c8f12
parent5d1ee00b1fe1180503f6dfc10e87a6c6e74778f3 (diff)
downloadu-boot-midas-3b250ffb4113fe521a71c0a8b30340cf237c2508.tar.gz
u-boot-midas-3b250ffb4113fe521a71c0a8b30340cf237c2508.tar.bz2
u-boot-midas-3b250ffb4113fe521a71c0a8b30340cf237c2508.zip
env_nand: zero-initialize variable nand_erase_options
Commit 30486322 (nand erase: .spread, .part, .chip subcommands) added a new field to struct nand_erase_options, but forgot to update common/env_nand.c. Depending on the stack state and bad block distribution, saveenv() can thus erase more than CONFIG_ENV_RANGE bytes which may corrupt the following NAND sectors/partitions. Signed-off-by: Daniel Hobi <daniel.hobi@schmid-telecom.ch> Signed-off-by: Scott Wood <scottwood@freescale.com>
-rw-r--r--common/env_nand.c8
1 files changed, 2 insertions, 6 deletions
diff --git a/common/env_nand.c b/common/env_nand.c
index 980425a8ee..14446a6a57 100644
--- a/common/env_nand.c
+++ b/common/env_nand.c
@@ -193,10 +193,8 @@ int saveenv(void)
int ret = 0;
nand_erase_options_t nand_erase_options;
+ memset(&nand_erase_options, 0, sizeof(nand_erase_options));
nand_erase_options.length = CONFIG_ENV_RANGE;
- nand_erase_options.quiet = 0;
- nand_erase_options.jffs2 = 0;
- nand_erase_options.scrub = 0;
if (CONFIG_ENV_RANGE < CONFIG_ENV_SIZE)
return 1;
@@ -249,10 +247,8 @@ int saveenv(void)
char *res;
nand_erase_options_t nand_erase_options;
+ memset(&nand_erase_options, 0, sizeof(nand_erase_options));
nand_erase_options.length = CONFIG_ENV_RANGE;
- nand_erase_options.quiet = 0;
- nand_erase_options.jffs2 = 0;
- nand_erase_options.scrub = 0;
nand_erase_options.offset = CONFIG_ENV_OFFSET;
if (CONFIG_ENV_RANGE < CONFIG_ENV_SIZE)