aboutsummaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
authorvan Hauser <vh@thc.org>2021-03-19 23:54:36 +0100
committerGitHub <noreply@github.com>2021-03-19 23:54:36 +0100
commit090128b3f8b8bc80cf47ae1481b01c0509dc6357 (patch)
tree03c3314427f02533a8db3e06587ce3afe74a5f23 /utils
parentd7e121e2c99c02d4b6984f21ba837d44bce9c77c (diff)
parent749b03d812b76746b4a673f34a13fb0b067fd61d (diff)
downloadafl++-090128b3f8b8bc80cf47ae1481b01c0509dc6357.tar.gz
Merge branch 'dev' into dev
Diffstat (limited to 'utils')
-rwxr-xr-xutils/crash_triage/triage_crashes.sh2
-rw-r--r--utils/libdislocator/libdislocator.so.c12
2 files changed, 10 insertions, 4 deletions
diff --git a/utils/crash_triage/triage_crashes.sh b/utils/crash_triage/triage_crashes.sh
index 4e8f09a0..a752458d 100755
--- a/utils/crash_triage/triage_crashes.sh
+++ b/utils/crash_triage/triage_crashes.sh
@@ -65,7 +65,7 @@ if [ ! -f "$BIN" -o ! -x "$BIN" ]; then
fi
if [ ! -d "$DIR/queue" ]; then
- echo "[-] Error: directory '$DIR/queue' not found or not created by afl-fuzz." 1>&2
+ echo "[-] Error: directory '$DIR' not found or not created by afl-fuzz." 1>&2
exit 1
fi
diff --git a/utils/libdislocator/libdislocator.so.c b/utils/libdislocator/libdislocator.so.c
index c041fec6..1b247c86 100644
--- a/utils/libdislocator/libdislocator.so.c
+++ b/utils/libdislocator/libdislocator.so.c
@@ -168,7 +168,7 @@ static void *__dislocator_alloc(size_t len) {
u8 * ret, *base;
size_t tlen;
- int flags, fd, sp;
+ int flags, protflags, fd, sp;
if (total_mem + len > max_mem || total_mem + len < total_mem) {
@@ -191,8 +191,14 @@ static void *__dislocator_alloc(size_t len) {
base = NULL;
tlen = (1 + PG_COUNT(rlen + 8)) * PAGE_SIZE;
+ protflags = PROT_READ | PROT_WRITE;
flags = MAP_PRIVATE | MAP_ANONYMOUS;
fd = -1;
+#if defined(PROT_MAX)
+ // apply when sysctl vm.imply_prot_max is set to 1
+ // no-op otherwise
+ protflags |= PROT_MAX(PROT_READ | PROT_WRITE);
+#endif
#if defined(USEHUGEPAGE)
sp = (rlen >= SUPER_PAGE_SIZE && !(rlen % SUPER_PAGE_SIZE));
@@ -215,7 +221,7 @@ static void *__dislocator_alloc(size_t len) {
(void)sp;
#endif
- ret = (u8 *)mmap(base, tlen, PROT_READ | PROT_WRITE, flags, fd, 0);
+ ret = (u8 *)mmap(base, tlen, protflags, flags, fd, 0);
#if defined(USEHUGEPAGE)
/* We try one more time with regular call */
if (ret == MAP_FAILED) {
@@ -229,7 +235,7 @@ static void *__dislocator_alloc(size_t len) {
#elif defined(__sun)
flags &= -MAP_ALIGN;
#endif
- ret = (u8 *)mmap(NULL, tlen, PROT_READ | PROT_WRITE, flags, fd, 0);
+ ret = (u8 *)mmap(NULL, tlen, protflags, flags, fd, 0);
}