diff options
author | Mike Pall <mike> | 2021-03-29 10:41:52 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2021-03-29 10:41:52 +0200 |
commit | 3217240b4767d481f7dd5e7036721aec643a1f11 (patch) | |
tree | 9d3a196c6cc520d09f99f5cf4e1719911d663b17 /src/lj_ccallback.c | |
parent | 9442226825e8e5be38474492adf7742dd47a4902 (diff) | |
download | luajit-3217240b4767d481f7dd5e7036721aec643a1f11.tar.gz luajit-3217240b4767d481f7dd5e7036721aec643a1f11.tar.bz2 luajit-3217240b4767d481f7dd5e7036721aec643a1f11.zip |
NetBSD: Use PROT_MPROTECT() and disable getentropy().
Note: this is not an officially supported target.
Contributed by David Carlier.
Diffstat (limited to 'src/lj_ccallback.c')
-rw-r--r-- | src/lj_ccallback.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/lj_ccallback.c b/src/lj_ccallback.c index 9de86258..8d6cb737 100644 --- a/src/lj_ccallback.c +++ b/src/lj_ccallback.c | |||
@@ -256,6 +256,11 @@ static void *callback_mcode_init(global_State *g, uint32_t *page) | |||
256 | #ifndef MAP_ANONYMOUS | 256 | #ifndef MAP_ANONYMOUS |
257 | #define MAP_ANONYMOUS MAP_ANON | 257 | #define MAP_ANONYMOUS MAP_ANON |
258 | #endif | 258 | #endif |
259 | #ifdef PROT_MPROTECT | ||
260 | #define CCPROT_CREATE (PROT_MPROTECT(PROT_EXEC)) | ||
261 | #else | ||
262 | #define CCPROT_CREATE 0 | ||
263 | #endif | ||
259 | 264 | ||
260 | #endif | 265 | #endif |
261 | 266 | ||
@@ -271,7 +276,7 @@ static void callback_mcode_new(CTState *cts) | |||
271 | if (!p) | 276 | if (!p) |
272 | lj_err_caller(cts->L, LJ_ERR_FFI_CBACKOV); | 277 | lj_err_caller(cts->L, LJ_ERR_FFI_CBACKOV); |
273 | #elif LJ_TARGET_POSIX | 278 | #elif LJ_TARGET_POSIX |
274 | p = mmap(NULL, sz, (PROT_READ|PROT_WRITE), MAP_PRIVATE|MAP_ANONYMOUS, | 279 | p = mmap(NULL, sz, (PROT_READ|PROT_WRITE|CCPROT_CREATE), MAP_PRIVATE|MAP_ANONYMOUS, |
275 | -1, 0); | 280 | -1, 0); |
276 | if (p == MAP_FAILED) | 281 | if (p == MAP_FAILED) |
277 | lj_err_caller(cts->L, LJ_ERR_FFI_CBACKOV); | 282 | lj_err_caller(cts->L, LJ_ERR_FFI_CBACKOV); |