diff options
author | Marek Vasut <marex@denx.de> | 2013-01-11 03:35:48 +0000 |
---|---|---|
committer | Tom Rini <trini@ti.com> | 2013-01-31 14:43:01 -0500 |
commit | 6ad77d88e57f6ab815ec7e85c5ac329054318c73 (patch) | |
tree | 8d6c6feef7e235ee587e78352fd36188794f4767 /fs | |
parent | 4e5eb45898b6f05fef3a4690399726c03bc1f398 (diff) | |
download | u-boot-6ad77d88e57f6ab815ec7e85c5ac329054318c73.tar.gz u-boot-6ad77d88e57f6ab815ec7e85c5ac329054318c73.tar.bz2 u-boot-6ad77d88e57f6ab815ec7e85c5ac329054318c73.zip |
vfat: Fix mkcksum argument sizes
In case a function argument is known/fixed size array in C, the argument is
still decoyed as pointer instead ( T f(U n[k]) ~= T fn(U *n) ) and therefore
calling sizeof on the function argument will result in the size of the pointer,
not the size of the array.
The VFAT code contains such a bug, this patch fixes it.
Reported-by: Aaron Williams <Aaron.Williams@cavium.com>
Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Tom Rini <tom.rini@gmail.com>
Cc: Aaron Williams <Aaron.Williams@cavium.com>
Tested-by: Michal Simek <michal.simek@xilinx.com>
Reviewed-by: Joe Hershberger <joe.hershberger@ni.com>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/fat/fat.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/fat/fat.c b/fs/fat/fat.c index 393c3781eb..25d3318cd0 100644 --- a/fs/fat/fat.c +++ b/fs/fat/fat.c @@ -569,9 +569,9 @@ static __u8 mkcksum(const char name[8], const char ext[3]) __u8 ret = 0; - for (i = 0; i < sizeof(name); i++) + for (i = 0; i < 8; i++) ret = (((ret & 1) << 7) | ((ret & 0xfe) >> 1)) + name[i]; - for (i = 0; i < sizeof(ext); i++) + for (i = 0; i < 3; i++) ret = (((ret & 1) << 7) | ((ret & 0xfe) >> 1)) + ext[i]; return ret; |