From ccfb2b03f72a852fc332bdb2cc01b77562fbb7cc Mon Sep 17 00:00:00 2001 From: kalaposfos13 <153381648+kalaposfos13@users.noreply.github.com> Date: Tue, 17 Jun 2025 19:36:56 +0200 Subject: [PATCH] Return ENOMEM if len exceeds the available space in sceKernelMapNamedDirectMemory --- src/core/libraries/kernel/memory.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/core/libraries/kernel/memory.cpp b/src/core/libraries/kernel/memory.cpp index ea3998ddd..860e7ba0f 100644 --- a/src/core/libraries/kernel/memory.cpp +++ b/src/core/libraries/kernel/memory.cpp @@ -194,6 +194,10 @@ int PS4_SYSV_ABI sceKernelMapNamedDirectMemory(void** addr, u64 len, int prot, i const auto map_flags = static_cast(flags); auto* memory = Core::Memory::Instance(); + if (memory->GetTotalDirectSize() < len) { + LOG_ERROR(Kernel_Vmm, "Length is too big!"); + return ORBIS_KERNEL_ERROR_ENOMEM; + } const auto ret = memory->MapMemory(addr, in_addr, len, mem_prot, map_flags, Core::VMAType::Direct, name, false, directMemoryStart, alignment);