Added cppcheck --enable-portability, fixed UBs

Fixed reported UBs involving (void *) ptr arithmetic
pull/380/head
Daniele Lacamera 2023-10-13 16:14:07 +02:00
parent dcb82b6545
commit c3c6d21675
6 changed files with 10 additions and 7 deletions

View File

@ -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)] $@"

View File

@ -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",

View File

@ -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",

View File

@ -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};

View File

@ -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

View File

@ -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;