summaryrefslogtreecommitdiff
path: root/etc/rc
diff options
context:
space:
mode:
authorTodd C. Miller <millert@cvs.openbsd.org>1999-09-04 21:30:50 +0000
committerTodd C. Miller <millert@cvs.openbsd.org>1999-09-04 21:30:50 +0000
commit97308e86b60faa4fb85faf5045da35deccda3a40 (patch)
tree0aaf7a6d3bedcb1fc346d389d38d91c2e4bbc184 /etc/rc
parente3b08a79d1c361a37ec48ba587dc3b06b5a480bb (diff)
Ignore /var/tmp/vi.recover if it is a symlink or owned by non-root.
Probably just paranoia (since /var/tmp/vi.recover is created the first time the machine is booted) but it can't hurt.
Diffstat (limited to 'etc/rc')
-rw-r--r--etc/rc72
1 files changed, 38 insertions, 34 deletions
diff --git a/etc/rc b/etc/rc
index 6cf2a676e0a..def375eacc3 100644
--- a/etc/rc
+++ b/etc/rc
@@ -1,4 +1,4 @@
-# $OpenBSD: rc,v 1.109 1999/09/04 21:07:23 millert Exp $
+# $OpenBSD: rc,v 1.110 1999/09/04 21:30:49 millert Exp $
# System startup script run by init on autoboot
# or after single-user.
@@ -327,43 +327,47 @@ if [ $? -eq 0 ]; then
fi
# vi file recovery
-if [ ! -d /var/tmp/vi.recover ]; then
- if [ -e /var/tmp/vi.recover ]; then
- echo "Warning! /var/tmp/vi.recover is not a directory!"
- else
- mkdir /var/tmp/vi.recover
- chmod 1777 /var/tmp/vi.recover
+vidir=/var/tmp/vi.recover
+if [ -L $vidir ]; then
+ echo "Warning! $vidir is a symbolic link! (ignoring)"
+elif [ ! -O $vidir ]; then
+ echo "Warning! $vidir is not owned by root! (ignoring)"
+elif [ ! -d $vidir -a -e $vidir ]; then
+ echo "Warning! $vidir is not a directory! (ignoring)"
+elif [ ! -d $vidir ]; then
+ mkdir $vidir
+ chmod 1777 $vidir
+else
+ vibackup=$vidir/vi.*
+ if [ "$vibackup" != "$vidir/vi.*" ]; then
+ for i in $vibackup; do
+ # Unmodified vi editor backup files either have the
+ # execute bit set or are zero length. Delete them.
+ # Anything that is not a normal file gets deleted too.
+ if [ -x $i -o ! -s $i -o ! -f $i ]; then
+ rm $i
+ fi
+ done
fi
-fi
-vibackup=/var/tmp/vi.recover/vi.*
-if [ "$vibackup" != "/var/tmp/vi.recover/vi.*" ]; then
- for i in $vibackup; do
- # Unmodified vi editor backup files either have the
- # execute bit set or are zero length. Delete them.
- # Anything that is not a normal file gets deleted too.
- if [ -x $i -o ! -s $i -o ! -f $i ]; then
- rm $i
- fi
- done
-fi
-virecovery=/var/tmp/vi.recover/recover.*
-if [ "$virecovery" != "/var/tmp/vi.recover/recover.*" ]; then
- echo preserving editor files
- for i in $virecovery; do
- # Delete any recovery files that are zero length, corrupted,
- # or that have no corresponding backup file. Else send mail
- # to the user.
- if [ -f $i ]; then
- recfile=`awk '/^X-vi-recover-path:/{print $2}' < $i`
- if [ -n "$recfile" -a -s "$recfile" ]; then
- sendmail -t < $i
+ virecovery=$vidir/recover.*
+ if [ "$virecovery" != "$vidir/recover.*" ]; then
+ echo preserving editor files
+ for i in $virecovery; do
+ # Delete any recovery files that are zero length,
+ # corrupted, # or that have no corresponding backup
+ # file. Else send mail to the user.
+ if [ -f $i ]; then
+ r=`awk '/^X-vi-recover-path:/{print $2}' < $i`
+ if [ -n "$r" -a -s "$r" ]; then
+ sendmail -t < $i
+ else
+ rm $i
+ fi
else
rm $i
fi
- else
- rm $i
- fi
- done
+ done
+ fi
fi
if [ -f /var/account/acct ]; then