From 5c455f803f8c69c918799e72f3366089823d6ba7 Mon Sep 17 00:00:00 2001 From: Pawel Dziepak Date: Thu, 11 Apr 2013 04:27:40 +0200 Subject: [PATCH] vm: let aslr use kernel utils for random numbers --- src/system/kernel/vm/VMUserAddressSpace.cpp | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) diff --git a/src/system/kernel/vm/VMUserAddressSpace.cpp b/src/system/kernel/vm/VMUserAddressSpace.cpp index c517e84250..2be6d1a689 100644 --- a/src/system/kernel/vm/VMUserAddressSpace.cpp +++ b/src/system/kernel/vm/VMUserAddressSpace.cpp @@ -17,6 +17,7 @@ #include #include #include +#include #include #include @@ -420,28 +421,13 @@ VMUserAddressSpace::_RandomizeAddress(addr_t start, addr_t end, if (start == end) return start; - const int kRandShift = log2(RAND_MAX) + 1; - int shift = 0; -#ifdef B_HAIKU_64_BIT - uint64_t random = 0; - while (shift < 64) { - random |= (uint64_t)rand() << shift; - shift += kRandShift; - } -#else - uint32_t random = 0; - while (shift < 32) { - random |= (uint32_t)rand() << shift; - shift += kRandShift; - } -#endif - addr_t range = end - start; if (initial) range = min_c(range, kMaxInitialRandomize); else range = min_c(range, kMaxRandomize); + addr_t random = get_random(); random %= range; random &= ~addr_t(alignment - 1);