summaryrefslogtreecommitdiffstats
path: root/common/environment.c
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2014-03-29 06:44:57 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2014-03-29 06:45:11 +0100
commit0ae451a7bc4a8e7dcffd66c727fb959e78af8f66 (patch)
tree5ad471d04c00bcae59a02b7bc881513b11c9e506 /common/environment.c
parent258772deab03410bbe32b4a89f9643168d1c653f (diff)
downloadbarebox-0ae451a7bc4a8e7dcffd66c727fb959e78af8f66.tar.gz
barebox-0ae451a7bc4a8e7dcffd66c727fb959e78af8f66.tar.xz
environment: Fix unitiliazed variable
envfs_load_data needs a pointer to the envfs_super, otherwise it works on an unitialized struct when detecting the envfs version. This is broken since: | commit 0a2a8f7059e6cb11e5d4eb882538b37f99d09ee3 | Author: Sascha Hauer <s.hauer@pengutronix.de> | Date: Thu Feb 20 08:16:01 2014 +0100 | | environment: Add function to load envfs from buffer | | Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Grmpf. Most compilers do not issue a warning, only the blackfin gcc 4.3.5 warns about this. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'common/environment.c')
-rw-r--r--common/environment.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/common/environment.c b/common/environment.c
index 776fa3ad38..9f4e098285 100644
--- a/common/environment.c
+++ b/common/environment.c
@@ -253,9 +253,9 @@ static int envfs_check_data(struct envfs_super *super, const void *buf, size_t s
return 0;
}
-static int envfs_load_data(void *buf, size_t size, const char *dir, unsigned flags)
+static int envfs_load_data(struct envfs_super *super, void *buf, size_t size,
+ const char *dir, unsigned flags)
{
- struct envfs_super super;
int fd, ret = 0;
char *str, *tmp;
int headerlen_full;
@@ -281,7 +281,7 @@ static int envfs_load_data(void *buf, size_t size, const char *dir, unsigned fla
inode_size = ENVFS_32(inode->size);
inode_headerlen = ENVFS_32(inode->headerlen);
namelen = strlen(inode->data) + 1;
- if (super.major < 1)
+ if (super->major < 1)
inode_end = &inode_end_dummy;
else
inode_end = (struct envfs_inode_end *)(buf + PAD4(namelen));
@@ -363,7 +363,7 @@ int envfs_load_from_buf(void *buf, int len, const char *dir, unsigned flags)
if (ret)
return ret;
- ret = envfs_load_data(buf, size, dir, flags);
+ ret = envfs_load_data(super, buf, size, dir, flags);
return ret;
}
@@ -415,7 +415,7 @@ int envfs_load(const char *filename, const char *dir, unsigned flags)
if (ret)
goto out;
- ret = envfs_load_data(buf, size, dir, flags);
+ ret = envfs_load_data(&super, buf, size, dir, flags);
if (ret)
goto out;