mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2025-04-21 03:54:45 +00:00
Check for valid pointers to extended memory
This commit is contained in:
parent
b443bec7d9
commit
6f8b6f50db
2 changed files with 9 additions and 1 deletions
|
@ -71,7 +71,7 @@ void Linker::Execute() {
|
|||
bool use_extended_mem1 = true, use_extended_mem2 = true;
|
||||
|
||||
const auto* proc_param = GetProcParam();
|
||||
ASSERT_MSG(proc_param);
|
||||
ASSERT(proc_param);
|
||||
|
||||
Core::OrbisKernelMemParam mem_param{};
|
||||
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();
|
||||
if (fw_ver < Common::ElfInfo::FW_50) {
|
||||
use_extended_mem1 = mem_param.extended_memory_1 ? *mem_param.extended_memory_1 : false;
|
||||
|
|
|
@ -24,6 +24,7 @@ struct OrbisKernelMemParam {
|
|||
u8* extended_memory_2;
|
||||
u64* exnteded_cpu_page_table;
|
||||
};
|
||||
static_assert(sizeof(OrbisKernelMemParam) == 0x38);
|
||||
|
||||
struct OrbisProcParam {
|
||||
u64 size;
|
||||
|
|
Loading…
Add table
Reference in a new issue