memory: Guard against OrbisProcParam without an OrbisKernelMemParam.

This commit is contained in:
squidbus 2024-08-27 19:25:13 -07:00
parent ca9360a865
commit f48b92eefd

View file

@ -68,9 +68,17 @@ void Linker::Execute() {
}
// Configure used flexible memory size.
if (auto* mem_param = GetProcParam()->mem_param) {
if (u64* flexible_size = mem_param->flexible_memory_size) {
memory->SetupMemoryRegions(*flexible_size);
if (const auto* proc_param = GetProcParam()) {
if (proc_param->size >=
offsetof(OrbisProcParam, mem_param) + sizeof(OrbisKernelMemParam*)) {
if (const auto* mem_param = proc_param->mem_param) {
if (mem_param->size >=
offsetof(OrbisKernelMemParam, flexible_memory_size) + sizeof(u64*)) {
if (const auto* flexible_size = mem_param->flexible_memory_size) {
memory->SetupMemoryRegions(*flexible_size);
}
}
}
}
}