[U-Boot] [PATCH] 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 --- fs/fat/fat.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/fs/fat/fat.c b/fs/fat/fat.c index 393c378..25d3318 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;

2013/1/11 Marek Vasut marex@denx.de:
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
fs/fat/fat.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
Tested-by: Michal Simek michal.simek@xilinx.com
Thanks, Michal

On Fri, Jan 11, 2013 at 7:35 AM, Marek Vasut marex@denx.de wrote:
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
fs/fat/fat.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/fs/fat/fat.c b/fs/fat/fat.c index 393c378..25d3318 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;
Reviewed-by: Joe Hershberger joe.hershberger@ni.com

On Fri, Jan 11, 2013 at 03:35:48AM -0000, Marek Vasut wrote:
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
Applied to u-boot/master, thanks!

Dear Tom Rini,
On Fri, Jan 11, 2013 at 03:35:48AM -0000, Marek Vasut wrote:
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
Applied to u-boot/master, thanks!
Can we have a bugfix release 2013.02 or something ? This is a grave bug.
Best regards, Marek Vasut
participants (4)
-
Joe Hershberger
-
Marek Vasut
-
Michal Simek
-
Tom Rini