diff options
author | Yifan Lu | 2016-10-05 22:49:07 -0700 |
---|---|---|
committer | Yifan Lu | 2016-10-05 22:49:07 -0700 |
commit | 95f638877b02ef684a48e485874b42b2767695fd (patch) | |
tree | 32d23eea740258d83099f8457b8f35190b553a80 /lib/darwin/execmem.c | |
parent | Fixed missing trampoline_size_left decrement for making initial trampoline jump (diff) | |
download | substitute-95f638877b02ef684a48e485874b42b2767695fd.tar.gz |
execmem_alloc_unsealed now outputs a separate pointer for exec and writing to allow for mirrored writes
Diffstat (limited to 'lib/darwin/execmem.c')
-rw-r--r-- | lib/darwin/execmem.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/darwin/execmem.c b/lib/darwin/execmem.c index c7068f3..540cb8e 100644 --- a/lib/darwin/execmem.c +++ b/lib/darwin/execmem.c @@ -63,10 +63,11 @@ static execmem_pc_patch_callback g_pc_patch_callback; static void *g_pc_patch_callback_ctx; static mach_port_t g_suspending_thread; -int execmem_alloc_unsealed(uintptr_t hint, void **page_p, size_t *size_p) { +int execmem_alloc_unsealed(uintptr_t hint, void **page_p, uintptr_t *vma_p, size_t *size_p) { *size_p = PAGE_SIZE; *page_p = mmap((void *) hint, *size_p, PROT_READ | PROT_WRITE, MAP_ANON | MAP_SHARED, -1, 0); + *vma_p = (uintptr_t)*page_p; if (*page_p == MAP_FAILED) return SUBSTITUTE_ERR_VM; return SUBSTITUTE_OK; |