diff options
author | Doug Barton <dougb@FreeBSD.org> | 2006-08-28 06:41:50 +0000 |
---|---|---|
committer | Doug Barton <dougb@FreeBSD.org> | 2006-08-28 06:41:50 +0000 |
commit | e8ea7f0260201934a72852f7de15042354a01e04 (patch) | |
tree | 0add6e7c22d8ddf9cbf34cd97be942d709a051b6 /libexec/save-entropy | |
parent | 6361212bebe8505174ab40681028d8967e477062 (diff) | |
download | src-e8ea7f0260201934a72852f7de15042354a01e04.tar.gz src-e8ea7f0260201934a72852f7de15042354a01e04.zip |
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.
Notes
Notes:
svn path=/head/; revision=161683
Diffstat (limited to 'libexec/save-entropy')
-rwxr-xr-x | libexec/save-entropy/save-entropy.sh | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/libexec/save-entropy/save-entropy.sh b/libexec/save-entropy/save-entropy.sh index 96f1a819be59..b5b37d40c3c7 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 \ |