summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/core/hle/service/vi/vi.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/core/hle/service/vi/vi.cpp b/src/core/hle/service/vi/vi.cpp
index 1afd5a4fb..0aa621dfe 100644
--- a/src/core/hle/service/vi/vi.cpp
+++ b/src/core/hle/service/vi/vi.cpp
@@ -39,6 +39,7 @@ public:
39 39
40 template <typename T> 40 template <typename T>
41 T Read() { 41 T Read() {
42 ASSERT(read_index + sizeof(T) <= buffer.size());
42 T val; 43 T val;
43 std::memcpy(&val, buffer.data() + read_index, sizeof(T)); 44 std::memcpy(&val, buffer.data() + read_index, sizeof(T));
44 read_index += sizeof(T); 45 read_index += sizeof(T);
@@ -48,6 +49,7 @@ public:
48 49
49 template <typename T> 50 template <typename T>
50 T ReadUnaligned() { 51 T ReadUnaligned() {
52 ASSERT(read_index + sizeof(T) <= buffer.size());
51 T val; 53 T val;
52 std::memcpy(&val, buffer.data() + read_index, sizeof(T)); 54 std::memcpy(&val, buffer.data() + read_index, sizeof(T));
53 read_index += sizeof(T); 55 read_index += sizeof(T);
@@ -55,6 +57,7 @@ public:
55 } 57 }
56 58
57 std::vector<u8> ReadBlock(size_t length) { 59 std::vector<u8> ReadBlock(size_t length) {
60 ASSERT(read_index + length <= buffer.size());
58 const u8* const begin = buffer.data() + read_index; 61 const u8* const begin = buffer.data() + read_index;
59 const u8* const end = begin + length; 62 const u8* const end = begin + length;
60 std::vector<u8> data(begin, end); 63 std::vector<u8> data(begin, end);
@@ -97,6 +100,8 @@ public:
97 } 100 }
98 101
99 void Deserialize() { 102 void Deserialize() {
103 ASSERT(buffer.size() > sizeof(Header));
104
100 Header header{}; 105 Header header{};
101 std::memcpy(&header, buffer.data(), sizeof(Header)); 106 std::memcpy(&header, buffer.data(), sizeof(Header));
102 107