diff options
author | gdkchan <gab.dark.100@gmail.com> | 2024-01-29 21:19:39 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-29 21:19:39 -0300 |
commit | ccbbaddbcb6a0eb0cee0d2e2482546611237bee3 (patch) | |
tree | be5c195001f9efc694ee554e25b869a2b514fe26 | |
parent | 8bf102d2cd744f56e2a4839fa0391acda3e201b8 (diff) |
Fix exception when trying to read output pointer buffer size (#6221)1.1.1151
* Fix exception when trying to read output pointer buffer size
* Better name
-rw-r--r-- | src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcMessage.cs | 3 | ||||
-rw-r--r-- | src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcMessageData.cs | 1 | ||||
-rw-r--r-- | src/Ryujinx.Horizon/Sdk/Sf/HipcCommandProcessor.cs | 2 |
3 files changed, 5 insertions, 1 deletions
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcMessage.cs b/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcMessage.cs index 887c82eb..73321a89 100644 --- a/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcMessage.cs +++ b/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcMessage.cs @@ -181,6 +181,7 @@ namespace Ryujinx.Horizon.Sdk.Sf.Hipc } Span<uint> dataWords = Span<uint>.Empty; + Span<uint> dataWordsPadded = Span<uint>.Empty; if (meta.DataWordsCount != 0) { @@ -189,6 +190,7 @@ namespace Ryujinx.Horizon.Sdk.Sf.Hipc int padding = (dataOffsetAligned - dataOffset) / sizeof(uint); dataWords = MemoryMarshal.Cast<byte, uint>(data)[padding..meta.DataWordsCount]; + dataWordsPadded = MemoryMarshal.Cast<byte, uint>(data)[..meta.DataWordsCount]; data = data[(meta.DataWordsCount * sizeof(uint))..]; } @@ -209,6 +211,7 @@ namespace Ryujinx.Horizon.Sdk.Sf.Hipc ReceiveBuffers = receiveBuffers, ExchangeBuffers = exchangeBuffers, DataWords = dataWords, + DataWordsPadded = dataWordsPadded, ReceiveList = receiveList, CopyHandles = copyHandles, MoveHandles = moveHandles, diff --git a/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcMessageData.cs b/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcMessageData.cs index 548f12e8..0d45d756 100644 --- a/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcMessageData.cs +++ b/src/Ryujinx.Horizon/Sdk/Sf/Hipc/HipcMessageData.cs @@ -9,6 +9,7 @@ namespace Ryujinx.Horizon.Sdk.Sf.Hipc public Span<HipcBufferDescriptor> ReceiveBuffers; public Span<HipcBufferDescriptor> ExchangeBuffers; public Span<uint> DataWords; + public Span<uint> DataWordsPadded; public Span<HipcReceiveListEntry> ReceiveList; public Span<int> CopyHandles; public Span<int> MoveHandles; diff --git a/src/Ryujinx.Horizon/Sdk/Sf/HipcCommandProcessor.cs b/src/Ryujinx.Horizon/Sdk/Sf/HipcCommandProcessor.cs index bb9b37e2..f7694a74 100644 --- a/src/Ryujinx.Horizon/Sdk/Sf/HipcCommandProcessor.cs +++ b/src/Ryujinx.Horizon/Sdk/Sf/HipcCommandProcessor.cs @@ -206,7 +206,7 @@ namespace Ryujinx.Horizon.Sdk.Sf } else { - var data = MemoryMarshal.Cast<uint, byte>(context.Request.Data.DataWords); + var data = MemoryMarshal.Cast<uint, byte>(context.Request.Data.DataWordsPadded); var recvPointerSizes = MemoryMarshal.Cast<byte, ushort>(data[runtimeMetadata.UnfixedOutPointerSizeOffset..]); size = recvPointerSizes[unfixedRecvPointerIndex++]; |