Переглянути джерело

UserspaceEmulator: Mark mmap and shbuf regions as initialized up front

A lot of software relies on the fact that mmap and shbuf memory is
zeroed out by the kernel, so we should consider it initialized from the
shadow bit perspective as well.
Andreas Kling 5 роки тому
батько
коміт
2a2e76c802

+ 3 - 1
DevTools/UserspaceEmulator/MmapRegion.cpp

@@ -26,6 +26,7 @@
 
 #include "MmapRegion.h"
 #include "Emulator.h"
+#include <string.h>
 #include <sys/mman.h>
 
 namespace UserspaceEmulator {
@@ -51,7 +52,8 @@ MmapRegion::MmapRegion(u32 base, u32 size, int prot)
     : Region(base, size)
     , m_prot(prot)
 {
-    m_shadow_data = (u8*)calloc(1, size);
+    m_shadow_data = (u8*)malloc(size);
+    memset(m_shadow_data, 1, size);
 }
 
 MmapRegion::~MmapRegion()

+ 3 - 1
DevTools/UserspaceEmulator/SharedBufferRegion.cpp

@@ -28,6 +28,7 @@
 #include "Emulator.h"
 #include <Kernel/API/Syscall.h>
 #include <serenity.h>
+#include <string.h>
 #include <sys/mman.h>
 
 namespace UserspaceEmulator {
@@ -42,7 +43,8 @@ SharedBufferRegion::SharedBufferRegion(u32 base, u32 size, int shbuf_id, u8* hos
     , m_data(host_data)
     , m_shbuf_id(shbuf_id)
 {
-    m_shadow_data = (u8*)calloc(1, size);
+    m_shadow_data = (u8*)malloc(size);
+    memset(m_shadow_data, 1, size);
 }
 
 SharedBufferRegion::~SharedBufferRegion()