core/kernel: return ENOMEM if memory area size is zero

This commit is contained in:
Daniel R 2024-08-24 19:53:24 +02:00
parent 7cd7323f98
commit 902d279c0a
No known key found for this signature in database
GPG Key ID: B8ADC8F57BA18DBA
1 changed files with 12 additions and 1 deletions

View File

@ -82,12 +82,23 @@ s32 PS4_SYSV_ABI sceKernelAvailableDirectMemorySize(u64 searchStart, u64 searchE
return ORBIS_KERNEL_ERROR_EINVAL;
}
if (physAddrOut == nullptr || sizeOut == nullptr) {
return ORBIS_KERNEL_ERROR_EINVAL;
}
auto* memory = Core::Memory::Instance();
PAddr physAddr;
size_t size;
s32 result =
memory->DirectQueryAvailable(searchStart, searchEnd, alignment, &physAddr, sizeOut);
memory->DirectQueryAvailable(searchStart, searchEnd, alignment, &physAddr, &size);
if (size == 0) {
return ORBIS_KERNEL_ERROR_ENOMEM;
}
*physAddrOut = static_cast<u64>(physAddr);
*sizeOut = size;
return result;
}