mirror of https://github.com/wolfSSL/wolfBoot.git
Three related defects: - panic() halted with a single hlt instruction (no loop), so any resumable interrupt (LAPIC timer via iretq) caused it to return, allowing callers to continue executing. Add while(1) and declare __attribute__((noreturn)) in both definition and header. - x86_paging_setup_ptp guarded with == WOLFBOOT_PTP_NUM instead of >=, so if the counter ever exceeded that value (after a panic() return) the guard was permanently bypassed. - The ptp pointer was computed before the bounds check, creating an out-of-bounds pointer for one-past-end indices; move the assignment to after the guard so no invalid pointer is ever formed. Add unit-x86-paging-oob test that sets page_table_page_used to WOLFBOOT_PTP_NUM and verifies that every subsequent call to x86_paging_setup_ptp triggers panic (via longjmp stub) rather than silently proceeding with an out-of-bounds memset. |
||
|---|---|---|
| .. | ||
| MPLAB | ||
| wolfboot | ||
| x86 | ||
| delta.h | ||
| disk.h | ||
| elf.h | ||
| encrypt.h | ||
| fdt.h | ||
| gpt.h | ||
| gzip.h | ||
| hal.h | ||
| hal_fpga.h | ||
| hooks.h | ||
| image.h | ||
| keystore.h | ||
| loader.h | ||
| multiboot.h | ||
| otp_keystore.h | ||
| pci.h | ||
| printf.h | ||
| sdhci.h | ||
| spi_drv.h | ||
| spi_flash.h | ||
| stage2_params.h | ||
| target.h.in | ||
| tpm.h | ||
| uart_drv.h | ||
| uart_flash.h | ||
| user_settings.h | ||