[U-Boot] [PATCH] cramfs: fix bug for wrong filename comparison

Holger Brunck holger.brunck at keymile.com
Thu Jul 4 10:29:46 CEST 2013


If we have the following entry in cramfs:
=> cramfsls
 -rw-r--r--  1922689 uImage

cramfsload would also succeed if we try to do:
=> cramfsload uImage_1
CRAMFS load complete: 1922689 bytes loaded to 0x100000

The old code succeeds if the begin of the filename we search matches
with a filename stored in cramfs. But the searched file may have
additional characters and is therfore not the file we are looking for.
So compare also the length of the filename we search and the
filename we found in cramfs. This leads to:
=> cramfsload uImage_1
can't find corresponding entry
CRAMFS LOAD ERROR<0> for uImage_1!

which is the behaviour we want.

Signed-off-by: Holger Brunck <holger.brunck at keymile.com>
cc: Wolfgang Denk <wd at denx.de>
---
 fs/cramfs/cramfs.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/fs/cramfs/cramfs.c b/fs/cramfs/cramfs.c
index 910955d..e578a1e 100644
--- a/fs/cramfs/cramfs.c
+++ b/fs/cramfs/cramfs.c
@@ -126,7 +126,8 @@ static unsigned long cramfs_resolve (unsigned long begin, unsigned long offset,
 			namelen--;
 		}
 
-		if (!strncmp (filename, name, namelen)) {
+		if (!strncmp(filename, name, namelen) &&
+		    (namelen == strlen(filename))) {
 			char *p = strtok (NULL, "/");
 
 			if (raw && (p == NULL || *p == '\0'))
-- 
1.8.0.1



More information about the U-Boot mailing list