Skip to content
Snippets Groups Projects
Commit 6fd19f05 authored by bunnei's avatar bunnei
Browse files

hle_ipc: Add GetReadBufferSize and check write buffer size.

parent 516a9572
No related branches found
No related tags found
No related merge requests found
...@@ -229,6 +229,8 @@ std::vector<u8> HLERequestContext::ReadBuffer() const { ...@@ -229,6 +229,8 @@ std::vector<u8> HLERequestContext::ReadBuffer() const {
size_t HLERequestContext::WriteBuffer(const void* buffer, const size_t size) const { size_t HLERequestContext::WriteBuffer(const void* buffer, const size_t size) const {
const bool is_buffer_b{BufferDescriptorB().size() && BufferDescriptorB()[0].Size()}; const bool is_buffer_b{BufferDescriptorB().size() && BufferDescriptorB()[0].Size()};
ASSERT_MSG(size <= GetWriteBufferSize(), "Size %d is too big", size);
if (is_buffer_b) { if (is_buffer_b) {
Memory::WriteBlock(BufferDescriptorB()[0].Address(), buffer, size); Memory::WriteBlock(BufferDescriptorB()[0].Address(), buffer, size);
} else { } else {
...@@ -242,6 +244,11 @@ size_t HLERequestContext::WriteBuffer(const std::vector<u8>& buffer) const { ...@@ -242,6 +244,11 @@ size_t HLERequestContext::WriteBuffer(const std::vector<u8>& buffer) const {
return WriteBuffer(buffer.data(), buffer.size()); return WriteBuffer(buffer.data(), buffer.size());
} }
size_t HLERequestContext::GetReadBufferSize() const {
const bool is_buffer_a{BufferDescriptorA().size() && BufferDescriptorA()[0].Size()};
return is_buffer_a ? BufferDescriptorA()[0].Size() : BufferDescriptorX()[0].Size();
}
size_t HLERequestContext::GetWriteBufferSize() const { size_t HLERequestContext::GetWriteBufferSize() const {
const bool is_buffer_b{BufferDescriptorB().size() && BufferDescriptorB()[0].Size()}; const bool is_buffer_b{BufferDescriptorB().size() && BufferDescriptorB()[0].Size()};
return is_buffer_b ? BufferDescriptorB()[0].Size() : BufferDescriptorC()[0].Size(); return is_buffer_b ? BufferDescriptorB()[0].Size() : BufferDescriptorC()[0].Size();
......
...@@ -152,6 +152,9 @@ public: ...@@ -152,6 +152,9 @@ public:
/// Helper function to write a buffer using the appropriate buffer descriptor /// Helper function to write a buffer using the appropriate buffer descriptor
size_t WriteBuffer(const std::vector<u8>& buffer) const; size_t WriteBuffer(const std::vector<u8>& buffer) const;
/// Helper function to get the size of the input buffer
size_t GetReadBufferSize() const;
/// Helper function to get the size of the output buffer /// Helper function to get the size of the output buffer
size_t GetWriteBufferSize() const; size_t GetWriteBufferSize() const;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment