mirror of
https://github.com/Fennix-Project/Kernel.git
synced 2025-05-28 15:34:33 +00:00
Add checks for invalid addresses
This commit is contained in:
parent
e57195ef51
commit
c9e2d99570
@ -243,10 +243,13 @@ NIF void MapKernel(PageTable *PT, BootInfo *Info)
|
|||||||
debug("Base kernel map address: %#lx", BaseKernelMapAddress);
|
debug("Base kernel map address: %#lx", BaseKernelMapAddress);
|
||||||
|
|
||||||
/* Kernel file */
|
/* Kernel file */
|
||||||
for (k = KernelFileStart; k < KernelFileEnd; k += PAGE_SIZE)
|
if (KernelFileStart != 0)
|
||||||
{
|
{
|
||||||
va.Map((void *)k, (void *)k, PTFlag::G);
|
for (k = KernelFileStart; k < KernelFileEnd; k += PAGE_SIZE)
|
||||||
KernelAllocator.ReservePage((void *)k);
|
{
|
||||||
|
va.Map((void *)k, (void *)k, PTFlag::G);
|
||||||
|
KernelAllocator.ReservePage((void *)k);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
@ -389,11 +392,7 @@ NIF void InitializeMemoryManagement(BootInfo *Info)
|
|||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
tracepagetable(KernelPageTable);
|
tracepagetable(KernelPageTable);
|
||||||
#endif
|
#endif
|
||||||
#if defined(a86)
|
CPU::PageTable(KernelPageTable);
|
||||||
asmv("mov %0, %%cr3" ::"r"(KernelPageTable));
|
|
||||||
#elif defined(aa64)
|
|
||||||
asmv("msr ttbr0_el1, %0" ::"r"(KernelPageTable));
|
|
||||||
#endif
|
|
||||||
debug("Page table updated.");
|
debug("Page table updated.");
|
||||||
if (strstr(Info->Kernel.CommandLine, "xallocv1"))
|
if (strstr(Info->Kernel.CommandLine, "xallocv1"))
|
||||||
{
|
{
|
||||||
|
@ -27,6 +27,12 @@ namespace SymbolResolver
|
|||||||
{
|
{
|
||||||
Symbols::Symbols(uintptr_t ImageAddress)
|
Symbols::Symbols(uintptr_t ImageAddress)
|
||||||
{
|
{
|
||||||
|
if (ImageAddress == 0 || Memory::Virtual().Check((void *)ImageAddress) == false)
|
||||||
|
{
|
||||||
|
error("Invalid image address %#lx", ImageAddress);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
this->Image = (void *)ImageAddress;
|
this->Image = (void *)ImageAddress;
|
||||||
debug("Solving symbols for address: %#llx", ImageAddress);
|
debug("Solving symbols for address: %#llx", ImageAddress);
|
||||||
Elf64_Ehdr *Header = (Elf64_Ehdr *)ImageAddress;
|
Elf64_Ehdr *Header = (Elf64_Ehdr *)ImageAddress;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user