diff options
| author | 2018-01-07 01:59:31 -0500 | |
|---|---|---|
| committer | 2018-01-07 17:11:49 -0500 | |
| commit | 7e3561b1cd3175d4e3104f03498adf03aca469bf (patch) | |
| tree | 40853d21e7ed03043b907ff5457a47c80399f567 | |
| parent | IPC Cleanup: Remove 3DS-specific code and translate copy, move and domain obj... (diff) | |
| download | yuzu-7e3561b1cd3175d4e3104f03498adf03aca469bf.tar.gz yuzu-7e3561b1cd3175d4e3104f03498adf03aca469bf.tar.xz yuzu-7e3561b1cd3175d4e3104f03498adf03aca469bf.zip | |
IPC: Don't attempt to read the command buffer if it holds a Close request.
| -rw-r--r-- | src/core/hle/kernel/hle_ipc.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/core/hle/kernel/hle_ipc.cpp b/src/core/hle/kernel/hle_ipc.cpp index 518e44f33..0ab28c0a2 100644 --- a/src/core/hle/kernel/hle_ipc.cpp +++ b/src/core/hle/kernel/hle_ipc.cpp | |||
| @@ -102,6 +102,11 @@ ResultCode HLERequestContext::PopulateFromIncomingCommandBuffer(u32_le* src_cmdb | |||
| 102 | Process& src_process, | 102 | Process& src_process, |
| 103 | HandleTable& src_table) { | 103 | HandleTable& src_table) { |
| 104 | ParseCommandBuffer(src_cmdbuf, true); | 104 | ParseCommandBuffer(src_cmdbuf, true); |
| 105 | if (command_header->type == IPC::CommandType::Close) { | ||
| 106 | // Close does not populate the rest of the IPC header | ||
| 107 | return RESULT_SUCCESS; | ||
| 108 | } | ||
| 109 | |||
| 105 | // The data_size already includes the payload header, the padding and the domain header. | 110 | // The data_size already includes the payload header, the padding and the domain header. |
| 106 | size_t size = data_payload_offset + command_header->data_size - | 111 | size_t size = data_payload_offset + command_header->data_size - |
| 107 | sizeof(IPC::DataPayloadHeader) / sizeof(u32) - 4; | 112 | sizeof(IPC::DataPayloadHeader) / sizeof(u32) - 4; |