From bcea7a02c3f542973cdec4897c7226e9b7538404 Mon Sep 17 00:00:00 2001 From: Stephen Miller <56742918+StevenMiller123@users.noreply.github.com> Date: Sun, 31 Aug 2025 18:14:51 -0500 Subject: [PATCH] Return EINVAL if mmap is called with length 0 (#3496) Hit by some multimedia apps --- src/core/libraries/kernel/memory.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/core/libraries/kernel/memory.cpp b/src/core/libraries/kernel/memory.cpp index ddc556fcd..b0e910e3b 100644 --- a/src/core/libraries/kernel/memory.cpp +++ b/src/core/libraries/kernel/memory.cpp @@ -575,6 +575,12 @@ void* PS4_SYSV_ABI posix_mmap(void* addr, u64 len, s32 prot, s32 flags, s32 fd, "called addr = {}, len = {:#x}, prot = {:#x}, flags = {:#x}, fd = {}, phys_addr = {:#x}", fmt::ptr(addr), len, prot, flags, fd, phys_addr); + if (len == 0) { + // If length is 0, mmap returns EINVAL. + ErrSceToPosix(ORBIS_KERNEL_ERROR_EINVAL); + return reinterpret_cast(-1); + } + void* addr_out; auto* memory = Core::Memory::Instance(); const auto mem_prot = static_cast(prot);