Procházet zdrojové kódy

am: avoid direct pointer access of transfer memory objects

Liam před 3 roky
rodič
revize
975186ad4d
1 změnil soubory, kde provedl 4 přidání a 6 odebrání
  1. 4 6
      src/core/hle/service/am/am.cpp

+ 4 - 6
src/core/hle/service/am/am.cpp

@@ -1260,9 +1260,8 @@ void ILibraryAppletCreator::CreateTransferMemoryStorage(Kernel::HLERequestContex
         return;
     }
 
-    const u8* const mem_begin = system.Memory().GetPointer(transfer_mem->GetSourceAddress());
-    const u8* const mem_end = mem_begin + transfer_mem->GetSize();
-    std::vector<u8> memory{mem_begin, mem_end};
+    std::vector<u8> memory(transfer_mem->GetSize());
+    system.Memory().ReadBlock(transfer_mem->GetSourceAddress(), memory.data(), memory.size());
 
     IPC::ResponseBuilder rb{ctx, 2, 0, 1};
     rb.Push(ResultSuccess);
@@ -1294,9 +1293,8 @@ void ILibraryAppletCreator::CreateHandleStorage(Kernel::HLERequestContext& ctx)
         return;
     }
 
-    const u8* const mem_begin = system.Memory().GetPointer(transfer_mem->GetSourceAddress());
-    const u8* const mem_end = mem_begin + transfer_mem->GetSize();
-    std::vector<u8> memory{mem_begin, mem_end};
+    std::vector<u8> memory(transfer_mem->GetSize());
+    system.Memory().ReadBlock(transfer_mem->GetSourceAddress(), memory.data(), memory.size());
 
     IPC::ResponseBuilder rb{ctx, 2, 0, 1};
     rb.Push(ResultSuccess);