mirror of
https://github.com/reactos/syzkaller.git
synced 2025-02-17 18:17:31 +00:00
executor: update syntax for making W+X fuchsia memory
Fuchsia recently changed such that zx_vmar_map can't be declared executable and writeable at the same time; use a new syscall for this purpose. Also made a few errors more informative.
This commit is contained in:
parent
f2468c12ea
commit
083cfd0e4a
@ -176,12 +176,16 @@ long syz_mmap(size_t addr, size_t size)
|
||||
fail("zx_object_get_info(ZX_INFO_VMAR) failed: %d", status);
|
||||
zx_handle_t vmo;
|
||||
status = zx_vmo_create(size, 0, &vmo);
|
||||
if (status != ZX_OK) {
|
||||
debug("zx_vmo_create failed with: %d", status);
|
||||
return status;
|
||||
}
|
||||
status = zx_vmo_replace_as_executable(vmo, ZX_HANDLE_INVALID, &vmo);
|
||||
if (status != ZX_OK)
|
||||
return status;
|
||||
uintptr_t mapped_addr;
|
||||
status = zx_vmar_map(root, ZX_VM_FLAG_SPECIFIC_OVERWRITE | ZX_VM_FLAG_PERM_READ | ZX_VM_FLAG_PERM_WRITE | ZX_VM_FLAG_PERM_EXECUTE,
|
||||
addr - info.base, vmo, 0, size,
|
||||
|
||||
&mapped_addr);
|
||||
return status;
|
||||
}
|
||||
|
@ -12,8 +12,9 @@
|
||||
|
||||
static void os_init(int argc, char** argv, void* data, size_t data_size)
|
||||
{
|
||||
if (syz_mmap((size_t)data, data_size) != ZX_OK)
|
||||
fail("mmap of data segment failed");
|
||||
zx_status_t status = syz_mmap((size_t)data, data_size);
|
||||
if (status != ZX_OK)
|
||||
fail("mmap of data segment failed with: %d", status);
|
||||
}
|
||||
|
||||
static long execute_syscall(const call_t* c, long a[kMaxArgs])
|
||||
|
@ -912,12 +912,16 @@ long syz_mmap(size_t addr, size_t size)
|
||||
fail("zx_object_get_info(ZX_INFO_VMAR) failed: %d", status);
|
||||
zx_handle_t vmo;
|
||||
status = zx_vmo_create(size, 0, &vmo);
|
||||
if (status != ZX_OK) {
|
||||
debug("zx_vmo_create failed with: %d", status);
|
||||
return status;
|
||||
}
|
||||
status = zx_vmo_replace_as_executable(vmo, ZX_HANDLE_INVALID, &vmo);
|
||||
if (status != ZX_OK)
|
||||
return status;
|
||||
uintptr_t mapped_addr;
|
||||
status = zx_vmar_map(root, ZX_VM_FLAG_SPECIFIC_OVERWRITE | ZX_VM_FLAG_PERM_READ | ZX_VM_FLAG_PERM_WRITE | ZX_VM_FLAG_PERM_EXECUTE,
|
||||
addr - info.base, vmo, 0, size,
|
||||
|
||||
&mapped_addr);
|
||||
return status;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user