From 4aee44b1c05463d6c1c15a47d09d8fcf679ebf22 Mon Sep 17 00:00:00 2001 From: Eladash <18193363+elad335@users.noreply.github.com> Date: Thu, 15 Feb 2024 13:53:38 +0200 Subject: [PATCH] sys_prx/overlay: Add some debugging steps --- rpcs3/Emu/Cell/lv2/sys_overlay.cpp | 10 +++++++++- rpcs3/Emu/Cell/lv2/sys_prx.cpp | 12 ++++++++++-- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/rpcs3/Emu/Cell/lv2/sys_overlay.cpp b/rpcs3/Emu/Cell/lv2/sys_overlay.cpp index ef2e8dd360..c951239d7e 100644 --- a/rpcs3/Emu/Cell/lv2/sys_overlay.cpp +++ b/rpcs3/Emu/Cell/lv2/sys_overlay.cpp @@ -36,7 +36,15 @@ static error_code overlay_load_module(vm::ptr ovlmid, const std::string& vp u128 klic = g_fxo->get().last_key(); - ppu_exec_object obj = decrypt_self(std::move(src), reinterpret_cast(&klic), nullptr, true); + src = decrypt_self(std::move(src), reinterpret_cast(&klic), nullptr, true); + + if (!src) + { + return {CELL_ENOEXEC, +"Failed to decrypt file"}; + } + + ppu_exec_object obj = std::move(src); + src.close(); if (obj != elf_error::ok) { diff --git a/rpcs3/Emu/Cell/lv2/sys_prx.cpp b/rpcs3/Emu/Cell/lv2/sys_prx.cpp index 84c9279dfa..d1a5f22d02 100644 --- a/rpcs3/Emu/Cell/lv2/sys_prx.cpp +++ b/rpcs3/Emu/Cell/lv2/sys_prx.cpp @@ -263,11 +263,19 @@ static error_code prx_load_module(const std::string& vpath, u64 flags, vm::ptrget().last_key(); - ppu_prx_object obj = decrypt_self(std::move(src), reinterpret_cast(&klic), nullptr, true); + src = decrypt_self(std::move(src), reinterpret_cast(&klic), nullptr, true); + + if (!src) + { + return {CELL_PRX_ERROR_UNSUPPORTED_PRX_TYPE, +"Failed to decrypt file"}; + } + + ppu_prx_object obj = std::move(src); + src.close(); if (obj != elf_error::ok) { - return CELL_PRX_ERROR_UNSUPPORTED_PRX_TYPE; + return {CELL_PRX_ERROR_UNSUPPORTED_PRX_TYPE, obj.get_error()}; } const auto prx = ppu_load_prx(obj, false, path, file_offset);