From 1fcb1ec367c157b2f58aefa4ea1a391530b7a76f Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sun, 25 Jul 2021 17:53:15 +0200 Subject: [PATCH] LibC: Randomize malloc() block addresses on x86_64 We have a lot of address space here, let's use it. :^) --- Userland/Libraries/LibC/malloc.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Userland/Libraries/LibC/malloc.cpp b/Userland/Libraries/LibC/malloc.cpp index 086c86c411..c3f3f190b5 100644 --- a/Userland/Libraries/LibC/malloc.cpp +++ b/Userland/Libraries/LibC/malloc.cpp @@ -158,7 +158,11 @@ extern "C" { static void* os_alloc(size_t size, const char* name) { - auto* ptr = serenity_mmap(nullptr, size, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_PRIVATE | MAP_PURGEABLE, 0, 0, ChunkedBlock::block_size, name); + int flags = MAP_ANONYMOUS | MAP_PRIVATE | MAP_PURGEABLE; +#if ARCH(X86_64) + flags |= MAP_RANDOMIZED; +#endif + auto* ptr = serenity_mmap(nullptr, size, PROT_READ | PROT_WRITE, flags, 0, 0, ChunkedBlock::block_size, name); VERIFY(ptr != MAP_FAILED); return ptr; }