From 0ae451a7bc4a8e7dcffd66c727fb959e78af8f66 Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Sat, 29 Mar 2014 06:44:57 +0100 Subject: [PATCH] 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 | Date: Thu Feb 20 08:16:01 2014 +0100 | | environment: Add function to load envfs from buffer | | Signed-off-by: Sascha Hauer Grmpf. Most compilers do not issue a warning, only the blackfin gcc 4.3.5 warns about this. Signed-off-by: Sascha Hauer --- common/environment.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/common/environment.c b/common/environment.c index 776fa3ad3..9f4e09828 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;