mmapped heaps: fix for systems with W^X policies

Using read/write/exec causes an error (or possibly abort) on systems
with W^X policies (like OpenBSD and NetBSD have by default).

Since the heap does not need to be executable, just use read/write.
This commit is contained in:
Kris Katterjohn 2019-10-04 20:50:41 -05:00
parent 25d4807f50
commit a1473f69ba

2
gc.c
View file

@ -500,7 +500,7 @@ sexp_heap sexp_make_heap (size_t size, size_t max_size, size_t chunk_size) {
sexp_free_list free, next;
sexp_heap h;
#if SEXP_USE_MMAP_GC
h = mmap(NULL, sexp_heap_pad_size(size), PROT_READ|PROT_WRITE|PROT_EXEC,
h = mmap(NULL, sexp_heap_pad_size(size), PROT_READ|PROT_WRITE,
MAP_ANON|MAP_PRIVATE, -1, 0);
if (h == MAP_FAILED) return NULL;
#else