diff options
Diffstat (limited to 'dev/kernel/src')
| -rw-r--r-- | dev/kernel/src/PEFCodeMgr.cc | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/dev/kernel/src/PEFCodeMgr.cc b/dev/kernel/src/PEFCodeMgr.cc index f572fe99..b83cb441 100644 --- a/dev/kernel/src/PEFCodeMgr.cc +++ b/dev/kernel/src/PEFCodeMgr.cc @@ -1,9 +1,12 @@ + /* ------------------------------------------- Copyright (C) 2024-2025, Amlal El Mahrouss, all rights reserved. + Copyright (C) 2025, Amlal El Mahrouss & NeKernel contributors, all rights reserved. ------------------------------------------- */ + #include <KernelKit/DebugOutput.h> #include <KernelKit/HeapMgr.h> #include <KernelKit/PEFCodeMgr.h> @@ -12,6 +15,8 @@ #include <NeKit/KString.h> #include <NeKit/KernelPanic.h> #include <NeKit/OwnPtr.h> +#include <NeKit/Utils.h> +#include <ArchKit/ArchKit.h> /// @brief PEF stack size symbol. #define kPefStackSizeSymbol "__PEFSizeOfReserveStack" @@ -154,15 +159,15 @@ ErrorOr<VoidPtr> PEFLoader::FindSymbol(const Char* name, Int32 kind) { Char* container_blob_value = new Char[container_header->VMSize]; - rt_copy_memory((VoidPtr) ((Char*) blob + sizeof(PEFCommandHeader)), container_blob_value, - container_header->VMSize); + rt_copy_memory_safe((VoidPtr) ((Char*) blob + sizeof(PEFCommandHeader)), container_blob_value, + container_header->VMSize, container_header->VMSize); mm_free_ptr(blob); kout << "PEFLoader: Information: Loaded stub: " << container_header->Name << "!\r"; - auto ret = HAL::mm_map_page((VoidPtr) container_header->VMAddress, - (VoidPtr) HAL::mm_get_page_addr(container_blob_value), - HAL::kMMFlagsPresent | HAL::kMMFlagsUser); + auto ret = mm_map_page((VoidPtr) container_header->VMAddress, + (VoidPtr) mm_get_page_addr(container_blob_value), + kMMFlagsPresent | kMMFlagsUser); if (ret != kErrorSuccess) { mm_free_ptr(container_blob_value); |
