summaryrefslogtreecommitdiffstats
path: root/libexec
diff options
context:
space:
mode:
authordougb <dougb@FreeBSD.org>2006-08-28 06:41:50 +0000
committerdougb <dougb@FreeBSD.org>2006-08-28 06:41:50 +0000
commit269fa0b3d58f085bd165e84872c3ef1ee116e505 (patch)
tree0add6e7c22d8ddf9cbf34cd97be942d709a051b6 /libexec
parentb7dde83f8261d095d1fa8432ad84954c93b838c9 (diff)
downloadFreeBSD-src-269fa0b3d58f085bd165e84872c3ef1ee116e505.zip
FreeBSD-src-269fa0b3d58f085bd165e84872c3ef1ee116e505.tar.gz
1. Attempt to take one bullet out of the foot-shooting gun by silently
ignoring errors when sourcing rc.conf* files. The most common error occurs when users put a command of some sort into those files. (ifconfig is a popular choice) 2. Make the file rotation logic simpler by starting one down from the "top" of the list, rather than at the top. 3. Try to make file rotation more secure by calling unlink(1) on all new file names before rotating an old file to the new name, rather than merely calling 'rm -f' on any files that exceed the number of files to save.
Diffstat (limited to 'libexec')
-rwxr-xr-xlibexec/save-entropy/save-entropy.sh20
1 files changed, 10 insertions, 10 deletions
diff --git a/libexec/save-entropy/save-entropy.sh b/libexec/save-entropy/save-entropy.sh
index 96f1a81..b5b37d4 100755
--- a/libexec/save-entropy/save-entropy.sh
+++ b/libexec/save-entropy/save-entropy.sh
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# Copyright (c) 2001-2005 Douglas Barton, DougB@FreeBSD.org
+# Copyright (c) 2001-2006 Douglas Barton, DougB@FreeBSD.org
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -37,9 +37,9 @@ PATH=/bin:/usr/bin
#
if [ -r /etc/defaults/rc.conf ]; then
. /etc/defaults/rc.conf
- source_rc_confs
+ source_rc_confs 2>/dev/null
elif [ -r /etc/rc.conf ]; then
- . /etc/rc.conf
+ . /etc/rc.conf 2>/dev/null
fi
case ${entropy_dir} in
@@ -66,16 +66,16 @@ fi
umask 377
-for file_num in `jot ${entropy_save_num} ${entropy_save_num} 1`; do
+esn_m1=$(( ${entropy_save_num} - 1 ))
+for file_num in `jot $esn_m1 $esn_m1 1`; do
if [ -e "${entropy_dir}/saved-entropy.${file_num}" ]; then
if [ -f "${entropy_dir}/saved-entropy.${file_num}" ]; then
- new_num=$(($file_num + 1))
- if [ "${new_num}" -gt "${entropy_save_num}" ]; then
- rm -f "${entropy_dir}/saved-entropy.${file_num}"
- else
- mv "${entropy_dir}/saved-entropy.${file_num}" \
- "${entropy_dir}/saved-entropy.${new_num}"
+ new_file=saved-entropy.$(( $file_num + 1 ))
+ if [ -e "${entropy_dir}/${new_file}" ]; then
+ unlink ${entropy_dir}/${new_file}
fi
+ mv "${entropy_dir}/saved-entropy.${file_num}" \
+ "${entropy_dir}/${new_file}"
else
logger -is -t "$0" \
"${entropy_dir}/saved-entropy.${file_num} is not a regular file, and therefore \
OpenPOWER on IntegriCloud