summaryrefslogtreecommitdiff
path: root/etc
diff options
context:
space:
mode:
authorTheo de Raadt <deraadt@cvs.openbsd.org>2011-07-19 13:50:50 +0000
committerTheo de Raadt <deraadt@cvs.openbsd.org>2011-07-19 13:50:50 +0000
commitff56f88546012c40d3c1b03321acddc7343ceb75 (patch)
tree7a6dba77d2edafdc081d279ac01b19acf49b115d /etc
parenta33d6281c661df04c2f5c1eb228d7621e6fb58b3 (diff)
random seed handling can now be done fairly early, well, as soon as
we are beyond the nfs diskless /var and /usr mounting. Issue also spotted by Hugo Villeneuve, attempt at repair by me. Let's see how it works out in practice... looked at by krw, too
Diffstat (limited to 'etc')
-rw-r--r--etc/rc19
1 files changed, 4 insertions, 15 deletions
diff --git a/etc/rc b/etc/rc
index 1b8e57797ef..b3d35b3fc74 100644
--- a/etc/rc
+++ b/etc/rc
@@ -1,4 +1,4 @@
-# $OpenBSD: rc,v 1.388 2011/07/19 13:49:07 deraadt Exp $
+# $OpenBSD: rc,v 1.389 2011/07/19 13:50:49 deraadt Exp $
# System startup script run by init on autoboot
# or after single-user.
@@ -101,16 +101,15 @@ wsconsctl_conf()
random_seed()
{
- if [ -f /var/db/host.random -a "X$random_seed_done" = "X" ]; then
+ if [ -f /var/db/host.random ]; then
dd if=/var/db/host.random of=/dev/arandom bs=65536 count=1 \
> /dev/null 2>&1
+ chmod 600 /var/db/host.random >/dev/null 2>&1
# reset seed file, so that if a shutdown-less reboot occurs,
# the next seed is not a repeat
dd if=/dev/arandom of=/var/db/host.random bs=65536 count=1 \
> /dev/null 2>&1
-
- random_seed_done=1
fi
}
@@ -329,8 +328,6 @@ mount -a -t nonfs,vnd
mount -uw / # root on nfs requires this, others aren't hurt
rm -f /fastboot # XXX (root now writeable)
-random_seed
-
# set flags on ttys. (do early, in case they use tty for SLIP in netstart)
echo 'setting tty flags'
ttyflags -a
@@ -395,15 +392,7 @@ fi
mount -s /usr >/dev/null 2>&1
mount -s /var >/dev/null 2>&1
-# if there's no /var/db/host.random, use /dev/arandom to create one
-if [ ! -f /var/db/host.random ]; then
- dd if=/dev/arandom of=/var/db/host.random bs=65536 count=1 \
- >/dev/null 2>&1
- chmod 600 /var/db/host.random >/dev/null 2>&1
-else
- # Try to read seed if it was not initially present (e.g. /var on NFS)
- random_seed
-fi
+random_seed
# clean up left-over files
rm -f /etc/nologin /var/spool/lock/LCK.* /var/spool/uucp/STST/*