diff options
| author | Subv <subv2112@gmail.com> | 2018-02-17 13:54:59 -0500 | 
|---|---|---|
| committer | Subv <subv2112@gmail.com> | 2018-02-17 14:00:44 -0500 | 
| commit | d7583324259c0c99d9f4a545751dc109229c6f05 (patch) | |
| tree | 4e5c31ad1e22a357b21a0b14441f48d9ea8b7144 | |
| parent | 2662de6e52344e082bc5855ea0e3e791588862c6 (diff) | |
Parcel: Ensure we don't read past the end of the parcels in Vi.
| -rw-r--r-- | src/core/hle/service/vi/vi.cpp | 5 | 
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:      template <typename T>      T Read() { +        ASSERT(read_index + sizeof(T) <= buffer.size());          T val;          std::memcpy(&val, buffer.data() + read_index, sizeof(T));          read_index += sizeof(T); @@ -48,6 +49,7 @@ public:      template <typename T>      T ReadUnaligned() { +        ASSERT(read_index + sizeof(T) <= buffer.size());          T val;          std::memcpy(&val, buffer.data() + read_index, sizeof(T));          read_index += sizeof(T); @@ -55,6 +57,7 @@ public:      }      std::vector<u8> ReadBlock(size_t length) { +        ASSERT(read_index + length <= buffer.size());          const u8* const begin = buffer.data() + read_index;          const u8* const end = begin + length;          std::vector<u8> data(begin, end); @@ -97,6 +100,8 @@ public:      }      void Deserialize() { +        ASSERT(buffer.size() > sizeof(Header)); +          Header header{};          std::memcpy(&header, buffer.data(), sizeof(Header)); | 
