[PATCH] cmd/mem.c: fix undefined behavior in mem cmp
Quentin Schulz
foss+uboot at 0leil.net
Fri Sep 27 18:37:43 CEST 2024
From: Quentin Schulz <quentin.schulz at cherry.de>
My linter complains that "When using void pointers in calculations, the
behaviour is undefined".
GCC does say that "In GNU C, addition and subtraction operations are
supported on pointers to void"[1] but this hints at this only being
supported in the GNU flavor of C. And I assume U-Boot may want to be
compiled with clang/llvm?
Let's fix that warning by casting the void pointer to a u8 pointer since
the size variable unit is byte.
[1] https://gcc.gnu.org/onlinedocs/gcc/Pointer-Arith.html
Fixes: 0628ab8ec598 ("sandbox: Change memory commands to use map_physmem")
Signed-off-by: Quentin Schulz <quentin.schulz at cherry.de>
---
cmd/mem.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/cmd/mem.c b/cmd/mem.c
index 274348068c2..08ec0aefa7d 100644
--- a/cmd/mem.c
+++ b/cmd/mem.c
@@ -293,8 +293,8 @@ static int do_mem_cmp(struct cmd_tbl *cmdtp, int flag, int argc,
break;
}
- buf1 += size;
- buf2 += size;
+ buf1 = ((u8 *)buf1) + size;
+ buf2 = ((u8 *)buf2) + size;
/* reset watchdog from time to time */
if ((ngood % (64 << 10)) == 0)
---
base-commit: 56b47b8b6a09c777e74fe6c52512c832691169aa
change-id: 20240927-cmd-mem-undefined-a4368d58b5b6
Best regards,
--
Quentin Schulz <quentin.schulz at cherry.de>
More information about the U-Boot
mailing list