void sanctify_for_execution(os_vm_address_t addr, os_vm_size_t len) { char *end_addr = addr + len; addr = os_trunc_to_page(addr); len = end_addr - addr; if (mprotect(addr, len, OS_VM_PROT_ALL) == -1) perror("mprotect"); }
boolean valid_addr(os_vm_address_t addr) { int ret; os_vm_address_t newaddr; newaddr = os_trunc_to_page(addr); if ((ret = mvalid(newaddr, newaddr - addr + 4, OS_VM_PROT_ALL)) == 0) return TRUE; else if (errno == EINVAL) perror("mvalid"); return FALSE; }