mirror of
https://github.com/FEX-Emu/FEX.git
synced 2026-10-06 15:00:17 +02:00
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:
1 parent
2a86421172
commit
4553564c9f
1 file changed
+9
-3
@@ -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;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user