diff options
Diffstat (limited to 'init.d/urandom.in')
-rw-r--r-- | init.d/urandom.in | 39 |
1 files changed, 17 insertions, 22 deletions
diff --git a/init.d/urandom.in b/init.d/urandom.in index cda431fd..8b7072c1 100644 --- a/init.d/urandom.in +++ b/init.d/urandom.in @@ -9,10 +9,7 @@ # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. -export SEEDRNG_SEED_DIR="${seed_dir:-/var/lib/seedrng}" -export SEEDRNG_LOCK_FILE="${lock_file:-/var/run/seedrng.lock}" -export SEEDRNG_SKIP_CREDIT="${skip_credit:-false}" -: ${urandom_seed:=${SEEDRNG_SEED_DIR}/../misc/random-seed} +: ${urandom_seed:=${URANDOM_SEED:-/var/lib/misc/random-seed}} description="Initializes the random number generator." depend() @@ -24,35 +21,33 @@ depend() save_seed() { + local psz=1 + + if [ -e /proc/sys/kernel/random/poolsize ]; then + : $(( psz = $(cat /proc/sys/kernel/random/poolsize) / 4096 )) + fi + ( # sub shell to prevent umask pollution umask 077 - dd if=/dev/urandom of="$urandom_seed" count=1 2>/dev/null + dd if=/dev/urandom of="$urandom_seed" count=${psz} 2>/dev/null ) } start() { - if [ "$RC_UNAME" = Linux ]; then - seedrng - else - [ -c /dev/urandom ] || return - if [ -f "$urandom_seed" ]; then - ebegin "Initializing random number generator" - cat "$urandom_seed" > /dev/urandom - eend $? "Error initializing random number generator" - fi - rm -f "$urandom_seed" && save_seed + [ -c /dev/urandom ] || return + if [ -f "$urandom_seed" ]; then + ebegin "Initializing random number generator" + cat "$urandom_seed" > /dev/urandom + eend $? "Error initializing random number generator" fi + rm -f "$urandom_seed" && save_seed return 0 } stop() { - if [ "$RC_UNAME" = Linux ]; then - seedrng - else - ebegin "Saving random seed" - save_seed - eend $? "Failed to save random seed" - fi + ebegin "Saving random seed" + save_seed + eend $? "Failed to save random seed" } |