mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2025-08-05 08:52:36 +00:00
Check for valid pointers to extended memory
This commit is contained in:
parent
b443bec7d9
commit
6f8b6f50db
@ -71,7 +71,7 @@ void Linker::Execute() {
|
|||||||
bool use_extended_mem1 = true, use_extended_mem2 = true;
|
bool use_extended_mem1 = true, use_extended_mem2 = true;
|
||||||
|
|
||||||
const auto* proc_param = GetProcParam();
|
const auto* proc_param = GetProcParam();
|
||||||
ASSERT_MSG(proc_param);
|
ASSERT(proc_param);
|
||||||
|
|
||||||
Core::OrbisKernelMemParam mem_param{};
|
Core::OrbisKernelMemParam mem_param{};
|
||||||
if (proc_param->size >= offsetof(OrbisProcParam, mem_param) + sizeof(OrbisKernelMemParam*)) {
|
if (proc_param->size >= offsetof(OrbisProcParam, mem_param) + sizeof(OrbisKernelMemParam*)) {
|
||||||
@ -86,6 +86,13 @@ void Linker::Execute() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (mem_param.size < offsetof(OrbisKernelMemParam, extended_memory_1) + sizeof(u64*)) {
|
||||||
|
mem_param.extended_memory_1 = nullptr;
|
||||||
|
}
|
||||||
|
if (mem_param.size < offsetof(OrbisKernelMemParam, extended_memory_2) + sizeof(u64*)) {
|
||||||
|
mem_param.extended_memory_2 = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
const u64 fw_ver = Common::ElfInfo::Instance().RawFirmwareVer();
|
const u64 fw_ver = Common::ElfInfo::Instance().RawFirmwareVer();
|
||||||
if (fw_ver < Common::ElfInfo::FW_50) {
|
if (fw_ver < Common::ElfInfo::FW_50) {
|
||||||
use_extended_mem1 = mem_param.extended_memory_1 ? *mem_param.extended_memory_1 : false;
|
use_extended_mem1 = mem_param.extended_memory_1 ? *mem_param.extended_memory_1 : false;
|
||||||
|
@ -24,6 +24,7 @@ struct OrbisKernelMemParam {
|
|||||||
u8* extended_memory_2;
|
u8* extended_memory_2;
|
||||||
u64* exnteded_cpu_page_table;
|
u64* exnteded_cpu_page_table;
|
||||||
};
|
};
|
||||||
|
static_assert(sizeof(OrbisKernelMemParam) == 0x38);
|
||||||
|
|
||||||
struct OrbisProcParam {
|
struct OrbisProcParam {
|
||||||
u64 size;
|
u64 size;
|
||||||
|
Loading…
Reference in New Issue
Block a user