diff options
| author | 0xf00sec <159052166+0xf00sec@users.noreply.github.com> | 2025-06-22 15:58:23 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-06-22 15:58:23 +0300 |
| commit | 8d25bf16c667eecd3b9f01263008ad7c68594cca (patch) | |
| tree | f38eae30733bd4ab5efb718e9843698093235ed7 /dev/kernel/src/PEFCodeMgr.cc | |
| parent | b1658f93dc1157e7883d381b0316a60e760fe557 (diff) | |
rt_copy_memory_safe: PEFCodeMgr.cc
Diffstat (limited to 'dev/kernel/src/PEFCodeMgr.cc')
| -rw-r--r-- | dev/kernel/src/PEFCodeMgr.cc | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/dev/kernel/src/PEFCodeMgr.cc b/dev/kernel/src/PEFCodeMgr.cc index f572fe99..e646b578 100644 --- a/dev/kernel/src/PEFCodeMgr.cc +++ b/dev/kernel/src/PEFCodeMgr.cc @@ -1,3 +1,5 @@ +#define __NE_AMD64__ + /* ------------------------------------------- Copyright (C) 2024-2025, Amlal El Mahrouss, all rights reserved. @@ -12,6 +14,10 @@ #include <NeKit/KString.h> #include <NeKit/KernelPanic.h> #include <NeKit/OwnPtr.h> +#include <NeKit/Utils.h> +#include <HALKit/AMD64/Processor.h> + +using namespace Kernel::HAL; /// @brief PEF stack size symbol. #define kPefStackSizeSymbol "__PEFSizeOfReserveStack" @@ -154,15 +160,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); |
