From 2ef7b73cff0d99d04e5091e98b3988532e2b1063 Mon Sep 17 00:00:00 2001 From: Amlal Date: Thu, 1 May 2025 08:50:50 +0200 Subject: kernel: mmap the blob to VMAddress in PEFCodeMgr, alongside other fixes regarding memory leaks. Signed-off-by: Amlal --- dev/kernel/KernelKit/IPEFDylibObject.h | 2 +- dev/kernel/KernelKit/LoaderInterface.h | 2 +- dev/kernel/KernelKit/PECodeMgr.h | 2 +- dev/kernel/KernelKit/PEF.h | 2 +- dev/kernel/KernelKit/PEFCodeMgr.h | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) (limited to 'dev/kernel/KernelKit') diff --git a/dev/kernel/KernelKit/IPEFDylibObject.h b/dev/kernel/KernelKit/IPEFDylibObject.h index 4031bd85..42ed1830 100644 --- a/dev/kernel/KernelKit/IPEFDylibObject.h +++ b/dev/kernel/KernelKit/IPEFDylibObject.h @@ -62,7 +62,7 @@ class IPEFDylibObject final NE_DYLIB_OBJECT { if (symbol_name == nullptr || *symbol_name == 0) return nullptr; if (len > kPathLen || len < 1) return nullptr; - auto ret = reinterpret_cast(fLoader->FindSymbol(symbol_name, kind)); + auto ret = reinterpret_cast(fLoader->FindSymbol(symbol_name, kind).Leak().Leak()); if (!ret) { if (kind == kPefCode) return (VoidPtr) &__zka_pure_call; diff --git a/dev/kernel/KernelKit/LoaderInterface.h b/dev/kernel/KernelKit/LoaderInterface.h index 42046a53..f6a1b7e9 100644 --- a/dev/kernel/KernelKit/LoaderInterface.h +++ b/dev/kernel/KernelKit/LoaderInterface.h @@ -27,6 +27,6 @@ class LoaderInterface { virtual _Output const Char* MIME() = 0; virtual _Output const Char* Path() = 0; virtual _Output ErrorOr FindStart() = 0; - virtual _Output VoidPtr FindSymbol(_Input const Char* name, _Input Int32 kind) = 0; + virtual _Output ErrorOr FindSymbol(_Input const Char* name, _Input Int32 kind) = 0; }; } // namespace Kernel diff --git a/dev/kernel/KernelKit/PECodeMgr.h b/dev/kernel/KernelKit/PECodeMgr.h index 860f3426..05a2674c 100644 --- a/dev/kernel/KernelKit/PECodeMgr.h +++ b/dev/kernel/KernelKit/PECodeMgr.h @@ -55,7 +55,7 @@ class PE32Loader : public LoaderInterface { public: ErrorOr FindStart() override; - VoidPtr FindSymbol(const Char* name, Int32 kind) override; + ErrorOr FindSymbol(const Char* name, Int32 kind) override; ErrorOr GetBlob() override; public: diff --git a/dev/kernel/KernelKit/PEF.h b/dev/kernel/KernelKit/PEF.h index 03398b48..9381e491 100644 --- a/dev/kernel/KernelKit/PEF.h +++ b/dev/kernel/KernelKit/PEF.h @@ -98,7 +98,7 @@ typedef struct PEFCommandHeader final { UInt32 Flags; /* container flags */ UInt16 Kind; /* container kind */ UIntPtr Offset; /* content offset */ - UIntPtr VMAddress; /* VM offset */ + UIntPtr VMAddress; /* VM offset */ SizeT Size; /* content Size */ } PACKED PEFCommandHeader; diff --git a/dev/kernel/KernelKit/PEFCodeMgr.h b/dev/kernel/KernelKit/PEFCodeMgr.h index b3ca43d0..a637892f 100644 --- a/dev/kernel/KernelKit/PEFCodeMgr.h +++ b/dev/kernel/KernelKit/PEFCodeMgr.h @@ -42,7 +42,7 @@ class PEFLoader : public LoaderInterface { public: ErrorOr FindStart() override; - VoidPtr FindSymbol(const Char* name, Int32 kind) override; + ErrorOr FindSymbol(const Char* name, Int32 kind) override; ErrorOr GetBlob() override; public: -- cgit v1.2.3