From f1a3b71a2102e9f7987b4dc589a4639c09526c93 Mon Sep 17 00:00:00 2001 From: tb Date: Mon, 26 Jun 2017 17:00:49 +0000 Subject: [PATCH] RANDOM1 was subject to rather bad modulus bias. Improve the situation a bit by implementing an arc4random_uniform(3) clone with beloved jot(1) and using it. discussed with and ok deraadt --- sys/conf/makegap.sh | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/sys/conf/makegap.sh b/sys/conf/makegap.sh index ddf16ffe7e6..e104163fb48 100644 --- a/sys/conf/makegap.sh +++ b/sys/conf/makegap.sh @@ -1,16 +1,28 @@ #!/bin/sh - +random_uniform() { + local _upper_bound + + if [[ $1 -gt 0 ]]; then + _upper_bound=$(($1 - 1)) + else + _upper_bound=0 + fi + + echo `jot -r 1 0 $_upper_bound 2>/dev/null` +} + umask 007 PAGE_SIZE=`sysctl -n hw.pagesize` PAD=$1 GAPDUMMY=$2 -RANDOM1=$((RANDOM % (3 * PAGE_SIZE))) -RANDOM2=$((RANDOM % PAGE_SIZE)) -RANDOM3=$((RANDOM % PAGE_SIZE)) -RANDOM4=$((RANDOM % PAGE_SIZE)) -RANDOM5=$((RANDOM % PAGE_SIZE)) +RANDOM1=`random_uniform $((3 * PAGE_SIZE))` +RANDOM2=`random_uniform $PAGE_SIZE` +RANDOM3=`random_uniform $PAGE_SIZE` +RANDOM4=`random_uniform $PAGE_SIZE` +RANDOM5=`random_uniform $PAGE_SIZE` cat > gap.link << __EOF__ -- 2.20.1