x32/Time: Fix potential null pointer dereference in clock_nanosleep

Prevents a potential null dereference in our code that could result from
user code.
This commit is contained in:
Lioncash committed 2021-06-25 08:30:36 -04:00
1 parent 2a86421172
commit 4553564c9f
1 file changed
+9 -3
+9 -3
View File
@@ -72,16 +72,22 @@ namespace FEX::HLE::x32 {
});
REGISTER_SYSCALL_IMPL_X32(clock_nanosleep, [](FEXCore::Core::CpuStateFrame *Frame, clockid_t clockid, int flags, const timespec32 *request, timespec32 *remain) -> uint64_t {
struct timespec req64{};
struct timespec rem64{};
struct timespec *rem64_ptr{};
req64 = *request;
if (remain) {
rem64 = *remain;
rem64_ptr = &rem64;
}
uint64_t Result = ::clock_nanosleep(clockid, flags, &req64, rem64_ptr);
uint64_t Result = 0;
if (request) {
const struct timespec req64 = *request;
Result = ::clock_nanosleep(clockid, flags, &req64, rem64_ptr);
} else {
Result = ::clock_nanosleep(clockid, flags, nullptr, rem64_ptr);
}
if (remain) {
*remain = rem64;
}