[U-Boot] [PATCH] common: env_flags: fix loop condition when using env_flags_varaccess_mask

From: Peng Fan peng.fan@nxp.com
We should use ARRAY_SIZE, but not sizeof. The size of env_flags_varaccess_mask is 16bytes, but we only need 4 loops. If using 16 as the end condition, we may access memory that not belong to array env_flags_varaccess_mask.
Signed-off-by: Peng Fan peng.fan@nxp.com Cc: Joe Hershberger joe.hershberger@ni.com Cc: York Sun yorksun@freescale.com Cc: Simon Glass sjg@chromium.org Cc: Tom Rini trini@konsulko.com --- common/env_flags.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/common/env_flags.c b/common/env_flags.c index 7719355..9c3aed1 100644 --- a/common/env_flags.c +++ b/common/env_flags.c @@ -152,7 +152,7 @@ enum env_flags_varaccess env_flags_parse_varaccess_from_binflags(int binflags) { int i;
- for (i = 0; i < sizeof(env_flags_varaccess_mask); i++) + for (i = 0; i < ARRAY_SIZE(env_flags_varaccess_mask); i++) if (env_flags_varaccess_mask[i] == (binflags & ENV_FLAGS_VARACCESS_BIN_MASK)) return (enum env_flags_varaccess)i;

On 12 January 2016 at 02:23, Peng Fan van.freenix@gmail.com wrote:
From: Peng Fan peng.fan@nxp.com
We should use ARRAY_SIZE, but not sizeof. The size of env_flags_varaccess_mask is 16bytes, but we only need 4 loops. If using 16 as the end condition, we may access memory that not belong to array env_flags_varaccess_mask.
Signed-off-by: Peng Fan peng.fan@nxp.com Cc: Joe Hershberger joe.hershberger@ni.com Cc: York Sun yorksun@freescale.com Cc: Simon Glass sjg@chromium.org Cc: Tom Rini trini@konsulko.com
common/env_flags.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
Reviewed-by: Simon Glass sjg@chromium.org

On Tue, Jan 12, 2016 at 3:23 AM, Peng Fan van.freenix@gmail.com wrote:
From: Peng Fan peng.fan@nxp.com
We should use ARRAY_SIZE, but not sizeof. The size of env_flags_varaccess_mask is 16bytes, but we only need 4 loops. If using 16 as the end condition, we may access memory that not belong to array env_flags_varaccess_mask.
Signed-off-by: Peng Fan peng.fan@nxp.com Cc: Joe Hershberger joe.hershberger@ni.com Cc: York Sun yorksun@freescale.com Cc: Simon Glass sjg@chromium.org Cc: Tom Rini trini@konsulko.com
Acked-by: Joe Hershberger joe.hershberger@ni.com

On Tue, Jan 12, 2016 at 05:23:12PM +0800, Peng Fan wrote:
From: Peng Fan peng.fan@nxp.com
We should use ARRAY_SIZE, but not sizeof. The size of env_flags_varaccess_mask is 16bytes, but we only need 4 loops. If using 16 as the end condition, we may access memory that not belong to array env_flags_varaccess_mask.
Signed-off-by: Peng Fan peng.fan@nxp.com Cc: Joe Hershberger joe.hershberger@ni.com Cc: York Sun yorksun@freescale.com Cc: Simon Glass sjg@chromium.org Cc: Tom Rini trini@konsulko.com Reviewed-by: Simon Glass sjg@chromium.org Acked-by: Joe Hershberger joe.hershberger@ni.com
Applied to u-boot/master, thanks!
participants (4)
-
Joe Hershberger
-
Peng Fan
-
Simon Glass
-
Tom Rini