diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2025-06-22 15:56:56 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-06-22 15:56:56 +0200 |
| commit | 7aad925f8492d293944f5384a17b3f228990b58f (patch) | |
| tree | 89fe25cc35f9040147465759b0426573590dd76f /dev/kernel | |
| parent | e7c4dec15417ea99d4d1674c4659f0c2a1519da9 (diff) | |
| parent | 69525ee410735e08b9abe6e00381624c5c8e202f (diff) | |
Merge pull request #45 from 0xf00sec/0xf00sec-patch-6.3
rt_copy_memory_safe: PEFCodeMgr.cc
Diffstat (limited to 'dev/kernel')
| -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); |
