From 2e6e0d0ef507c4f388959fe498083238dd709fec Mon Sep 17 00:00:00 2001 From: Bananymous Date: Wed, 8 Mar 2023 22:55:44 +0200 Subject: [PATCH] Kernel: FIX ubsan complaining about unaligned addresses for STDHeaders --- kernel/kernel/APIC.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/kernel/kernel/APIC.cpp b/kernel/kernel/APIC.cpp index 96bead29..33d8870c 100644 --- a/kernel/kernel/APIC.cpp +++ b/kernel/kernel/APIC.cpp @@ -185,11 +185,13 @@ uintptr_t locate_madt(uintptr_t rsdp_addr) uintptr_t entry_addr_ptr = entry_address_base + i * entry_pointer_size; MMU::get().allocate_page(entry_addr_ptr, MMU::Flags::ReadWrite | MMU::Flags::Present); + union dummy { uint32_t addr32; uint64_t addr64; } __attribute__((aligned(1), packed)); + uintptr_t entry_addr; if (entry_pointer_size == 4) - entry_addr = *(uint32_t*)entry_addr_ptr; + entry_addr = ((dummy*)entry_addr_ptr)->addr32; else - entry_addr = *(uint64_t*)entry_addr_ptr; + entry_addr = ((dummy*)entry_addr_ptr)->addr64; MMU::get().allocate_page(entry_addr, MMU::Flags::ReadWrite | MMU::Flags::Present);