summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel/src/PEFCodeMgr.cc
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-06-22 15:56:56 +0200
committerGitHub <noreply@github.com>2025-06-22 15:56:56 +0200
commit7aad925f8492d293944f5384a17b3f228990b58f (patch)
tree89fe25cc35f9040147465759b0426573590dd76f /dev/kernel/src/PEFCodeMgr.cc
parente7c4dec15417ea99d4d1674c4659f0c2a1519da9 (diff)
parent69525ee410735e08b9abe6e00381624c5c8e202f (diff)
Merge pull request #45 from 0xf00sec/0xf00sec-patch-6.3
rt_copy_memory_safe: PEFCodeMgr.cc
Diffstat (limited to 'dev/kernel/src/PEFCodeMgr.cc')
-rw-r--r--dev/kernel/src/PEFCodeMgr.cc15
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);