From c3c6d21675c8c1af3f3c54de95f0b7e2decf99b1 Mon Sep 17 00:00:00 2001 From: Daniele Lacamera Date: Fri, 13 Oct 2023 16:14:07 +0200 Subject: [PATCH] Added cppcheck --enable-portability, fixed UBs Fixed reported UBs involving (void *) ptr arithmetic --- Makefile | 5 ++++- hal/nxp_p1021.c | 2 +- hal/nxp_t1024.c | 2 +- hal/sim.c | 4 ++-- src/qspi_flash.c | 2 +- src/update_disk.c | 2 +- 6 files changed, 10 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index be76916e..3b87fbaa 100644 --- a/Makefile +++ b/Makefile @@ -329,7 +329,10 @@ line-count-x86: cloc --force-lang-def cloc_lang_def.txt src/boot_x86_fsp.c src/boot_x86_fsp_payload.c src/boot_x86_fsp_start.S src/image.c src/keystore.c src/libwolfboot.c src/loader.c src/string.c src/update_disk.c src/x86/ahci.c src/x86/ata.c src/x86/common.c src/x86/gpt.c src/x86/hob.c src/pci.c src/x86/tgl_fsp.c hal/x86_fsp_tgl.c hal/x86_uart.c cppcheck: - cppcheck -f --enable=warning --suppress="ctunullpointer" --suppress="nullPointer" --suppress="objectIndex" --suppress="comparePointers" --error-exitcode=89 --std=c89 src/*.c hal/*.c hal/spi/*.c hal/uart/*.c + cppcheck -f --enable=warning --enable=portability \ + --suppress="ctunullpointer" --suppress="nullPointer" \ + --suppress="objectIndex" --suppress="comparePointers" \ + --error-exitcode=89 --std=c89 src/*.c hal/*.c hal/spi/*.c hal/uart/*.c %.o:%.c @echo "\t[CC-$(ARCH)] $@" diff --git a/hal/nxp_p1021.c b/hal/nxp_p1021.c index 256acdb4..b4df54ea 100644 --- a/hal/nxp_p1021.c +++ b/hal/nxp_p1021.c @@ -1238,7 +1238,7 @@ struct qe_firmware { static void qe_upload_microcode(const struct qe_firmware *firmware, const struct qe_microcode *ucode) { - const uint32_t *code = (void*)firmware + ucode->code_offset; + const uint32_t *code = (uint32_t*)((uint8_t *)firmware + ucode->code_offset); unsigned int i; wolfBoot_printf("QE: uploading '%s' version %u.%u.%u\n", diff --git a/hal/nxp_t1024.c b/hal/nxp_t1024.c index 4c92fc1f..99ae14bc 100644 --- a/hal/nxp_t1024.c +++ b/hal/nxp_t1024.c @@ -1124,7 +1124,7 @@ struct qe_firmware { static void qe_upload_microcode(const struct qe_firmware *firmware, const struct qe_microcode *ucode) { - const uint32_t *code = (void*)firmware + ucode->code_offset; + const uint32_t *code = (uint32_t*)((uint8_t *)firmware + ucode->code_offset); unsigned int i; wolfBoot_printf("QE: uploading '%s' version %u.%u.%u\n", diff --git a/hal/sim.c b/hal/sim.c index 43e786fd..31c65e57 100644 --- a/hal/sim.c +++ b/hal/sim.c @@ -200,7 +200,7 @@ static int find_epc(void *base, struct entry_point_command **entry) *entry = NULL; mh = (struct mach_header_64*)base; - lc = (struct load_command*)(base + sizeof(struct mach_header_64)); + lc = (struct load_command*)((uint8_t *)base + sizeof(struct mach_header_64)); for (i=0; i<(int)mh->ncmds; i++) { if (lc->cmd == LC_MAIN) { /* 0x80000028 */ *entry = (struct entry_point_command *)lc; @@ -250,7 +250,7 @@ void do_boot(const uint32_t *app_offset) /* restore mh_bundle type to allow hash to remain valid */ app_buf[3] = typeVal; - main = (main_entry)(void*)(pSymbolAddress + epc->entryoff); + main = (main_entry)((uint8_t*)pSymbolAddress + epc->entryoff); main(main_argc, main_argv, NULL, NULL); #else char *envp[1] = {NULL}; diff --git a/src/qspi_flash.c b/src/qspi_flash.c index 1483f5db..e392ca16 100644 --- a/src/qspi_flash.c +++ b/src/qspi_flash.c @@ -444,7 +444,7 @@ int spi_flash_write(uint32_t address, const void *data, int len) addr, QSPI_ADDR_SZ, QSPI_DATA_MODE_SPI, /* Address */ 0, 0, QSPI_DATA_MODE_NONE, /* Alternate Bytes */ 0, /* Dummy */ - (uint8_t*)(data + (page * FLASH_PAGE_SIZE)), + ((uint8_t*)data + (page * FLASH_PAGE_SIZE)), xferSz, QSPI_DATA_MODE /* Data */ ); #ifdef DEBUG_QSPI diff --git a/src/update_disk.c b/src/update_disk.c index 771eb7c7..8e34f292 100644 --- a/src/update_disk.c +++ b/src/update_disk.c @@ -168,7 +168,7 @@ void RAMFUNCTION wolfBoot_start(void) load_off = 0; do { ret = disk_read(BOOT_DISK, cur_part, load_off, 512, - (void *)load_address + load_off); + (uint8_t *)load_address + load_off); if (ret < 0) break; load_off += ret;