Mercurial > pub > dyncall > dyncall
diff dyncallback/dyncall_callback_arm64.c @ 202:030fbb70aa1b
- changed allocwx code:
* to introduce a call allowing to switch the written page to be executable (e.g. using mprotect)
* changed mmap based code so page is always W^X
author | Tassilo Philipp |
---|---|
date | Mon, 20 Mar 2017 23:12:58 +0100 |
parents | d48a8b8d2ef9 |
children | f5577f6bf97a |
line wrap: on
line diff
--- a/dyncallback/dyncall_callback_arm64.c Sun Mar 19 20:26:01 2017 +0100 +++ b/dyncallback/dyncall_callback_arm64.c Mon Mar 20 23:12:58 2017 +0100 @@ -50,10 +50,18 @@ int err; DCCallback* pcb; err = dcAllocWX(sizeof(DCCallback), (void**) &pcb); - if (err != 0) return 0; + if(err) + return NULL; dcbInitThunk(&pcb->thunk, dcCallbackThunkEntry); dcbInitCallback(pcb, signature, handler, userdata); + + err = dcInitExecWX(pcb, sizeof(DCCallback)); + if(err) { + dcFreeWX(pcb, sizeof(DCCallback)); + return NULL; + } + return pcb; }