Browse Source

svc: Check for word alignment of addresses within svcArbitrateLock/svcArbitrateUnlock

The kernel itself checks whether or not the provided addresses are word
aligned before continuing, so we should be doing the same.
nce_cpp
Lioncash 7 years ago
parent
commit
c015a42cc2
  1. 8
      src/core/hle/kernel/svc.cpp

8
src/core/hle/kernel/svc.cpp

@ -350,6 +350,10 @@ static ResultCode ArbitrateLock(Handle holding_thread_handle, VAddr mutex_addr,
return ERR_INVALID_ADDRESS_STATE;
}
if (!Common::IsWordAligned(mutex_addr)) {
return ERR_INVALID_ADDRESS;
}
auto& handle_table = Core::System::GetInstance().Kernel().HandleTable();
return Mutex::TryAcquire(handle_table, mutex_addr, holding_thread_handle,
requesting_thread_handle);
@ -363,6 +367,10 @@ static ResultCode ArbitrateUnlock(VAddr mutex_addr) {
return ERR_INVALID_ADDRESS_STATE;
}
if (!Common::IsWordAligned(mutex_addr)) {
return ERR_INVALID_ADDRESS;
}
return Mutex::Release(mutex_addr);
}

Loading…
Cancel
Save