diff --git a/src/core/file_sys/ncch_container.cpp b/src/core/file_sys/ncch_container.cpp index 473a195bdb..a67f4de0c4 100644 --- a/src/core/file_sys/ncch_container.cpp +++ b/src/core/file_sys/ncch_container.cpp @@ -557,6 +557,9 @@ void NCCHContainer::ApplyIPS(std::vector& ips, std::vector& buffer) { if (length == 0) { length = ips[cursor + 5] << 8 | ips[cursor + 6]; + if (buffer.size() < offset + length) + return; + for (u32 i = 0; i < length; ++i) buffer[offset + i] = ips[cursor + 7]; @@ -565,6 +568,9 @@ void NCCHContainer::ApplyIPS(std::vector& ips, std::vector& buffer) { continue; } + if (buffer.size() < offset + length) + return; + std::memcpy(&buffer[offset], &ips[cursor + 5], length); cursor += length + 5; }