Просмотр исходного кода

Merge pull request #7107 from astrelsky/iob_fix

prevent access violation from iob in Memory::IsValidVirtualAddress
bunnei 4 лет назад
Родитель
Сommit
1d829150ee
1 измененных файлов с 5 добавлено и 1 удалено
  1. 5 1
      src/core/memory.cpp

+ 5 - 1
src/core/memory.cpp

@@ -587,7 +587,11 @@ void Memory::UnmapRegion(Common::PageTable& page_table, VAddr base, u64 size) {
 bool Memory::IsValidVirtualAddress(const VAddr vaddr) const {
     const Kernel::KProcess& process = *system.CurrentProcess();
     const auto& page_table = process.PageTable().PageTableImpl();
-    const auto [pointer, type] = page_table.pointers[vaddr >> PAGE_BITS].PointerType();
+    const size_t page = vaddr >> PAGE_BITS;
+    if (page >= page_table.pointers.size()) {
+        return false;
+    }
+    const auto [pointer, type] = page_table.pointers[page].PointerType();
     return pointer != nullptr || type == Common::PageType::RasterizerCachedMemory;
 }