X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/2a1bd2d3eef5c7a7bb14f4bb9fdbca9a96ee4752..a991bd8d3e7fe02dbca0644054bab73c5b75324a:/bsd/kern/kern_cs.c diff --git a/bsd/kern/kern_cs.c b/bsd/kern/kern_cs.c index ad1eb76ef..c3cc2afa8 100644 --- a/bsd/kern/kern_cs.c +++ b/bsd/kern/kern_cs.c @@ -63,6 +63,7 @@ #include <kern/task.h> #include <vm/vm_map.h> +#include <vm/pmap.h> #include <vm/vm_kern.h> @@ -231,6 +232,18 @@ cs_allow_invalid(struct proc *p) if (p->p_csflags & CS_VALID) { p->p_csflags |= CS_DEBUGGED; } +#if PMAP_CS + task_t procTask = proc_task(p); + if (procTask) { + vm_map_t proc_map = get_task_map_reference(procTask); + if (proc_map) { + if (vm_map_cs_wx_enable(proc_map) != KERN_SUCCESS) { + printf("CODE SIGNING: cs_allow_invalid() not allowed by pmap: pid %d\n", p->p_pid); + } + vm_map_deallocate(proc_map); + } + } +#endif // MAP_CS proc_unlock(p); /* allow a debugged process to hide some (debug-only!) memory */