Date: Tue, 9 May 2000 08:37:10 +0200 (CEST) From: clefevre@citeweb.net To: FreeBSD-gnats-submit@freebsd.org Subject: conf/18461: vi.recover misplaced in /var/tmp Message-ID: <200005090637.IAA05533@gits.dyndns.org>
next in thread | raw e-mail | index | archive | help
>Number: 18461 >Category: conf >Synopsis: vi.recover misplaced in /var/tmp >Confidential: no >Severity: serious >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Mon May 08 23:40:00 PDT 2000 >Closed-Date: >Last-Modified: >Originator: Cyrille Lefevre >Release: FreeBSD 4.0-STABLE i386 >Organization: ACME >Environment: FreeBSD gits 4.0-STABLE FreeBSD 4.0-STABLE #15: Tue May 9 00:32:14 CEST 2000 root@gits:/disk2/4.0-STABLE/src/sys/compile/CUSTOM i386 >Description: vi.recover should not be in /var/tmp. imagine the case where /var/tmp is a memory filesystem. upon reboot, everything is lost. >How-To-Repeat: make /var/tmp a memory filesystem in /etc/fstab as : swap /var/tmp mfs rw,async,-s65535 0 0 edit files, left them open, then reboot. nothing can be recovered. there all lost. >Fix: first, sets a variable $vi_recover to "/var/tmp/vi.recover" in /etc/defaults/rc.conf. in /etc/rc, if that variable in not to its default value, update /etc/vi.exrc in consequence. in all case, use it to determine where are files to recover. Index: /usr/src/etc/defaults/rc.conf =================================================================== RCS file: /home/ncvs/src/etc/defaults/rc.conf,v retrieving revision 1.53.2.3 diff -u -r1.53.2.3 rc.conf --- /usr/src/etc/defaults/rc.conf 2000/04/15 11:02:40 1.53.2.3 +++ /usr/src/etc/defaults/rc.conf 2000/05/09 06:25:20 @@ -276,6 +276,7 @@ svr4_enable="NO" # SysVR4 emulation loaded at startup (or NO). osf1_enable="NO" # Alpha OSF/1 emulation loaded at startup (or NO). rand_irqs="NO" # Stir the entropy pool (like "5 11" or NO). +vi_recover="/var/tmp/vi.recover" # The directory where recovery files are stored. clear_tmp_enable="NO" # Clear /tmp at startup. ldconfig_paths="/usr/lib/compat /usr/X11R6/lib /usr/local/lib" # shared library search paths Index: /usr/src/etc/rc =================================================================== RCS file: /home/ncvs/src/etc/rc,v retrieving revision 1.212 diff -u -r1.212 rc --- /usr/src/etc/rc 2000/02/28 19:54:06 1.212 +++ /usr/src/etc/rc 2000/05/09 06:32:00 @@ -413,11 +413,26 @@ echo '.' # Recover vi editor files. -find /var/tmp/vi.recover ! -type f -a ! -type d -delete -vibackup=`echo /var/tmp/vi.recover/vi.*` -if [ "${vibackup}" != '/var/tmp/vi.recover/vi.*' ]; then +if [ -n "$vi_recover" ]; then + if [ "$vi_recover" != /var/tmp/vi.recover ]; then + if [ -s /etc/vi.exrc ]; then + # be conservative + sed -e 's/recdir=[^ ]*[ ]*//' \ + -e '/^[ ]*set[ ]*$/d' \ + /etc/vi.exrc > /tmp/vi.exrc.$$ && + cp /tmp/vi.exrc.$$ /etc/vi.exrc && + rm /tmp/vi.exrc.$$ + fi + echo set recdir=$vi_recover >> /etc/vi.exrc + fi +else + vi_recover=/var/tmp/vi.recover # just in case +fi +find $vi_recover ! -type f -a ! -type d -delete +vibackup=`echo $vi_recover/vi.*` +if [ "${vibackup}" != '$vi_recover/vi.*' ]; then echo 'Recovering vi editor sessions' - for i in /var/tmp/vi.recover/vi.*; do + for i in $vi_recover/vi.*; do # Only test files that are readable. if [ ! -r "${i}" ]; then continue @@ -432,9 +447,9 @@ # It is possible to get incomplete recovery files, if the editor # crashes at the right time. - virecovery=`echo /var/tmp/vi.recover/recover.*` - if [ "${virecovery}" != "/var/tmp/vi.recover/recover.*" ]; then - for i in /var/tmp/vi.recover/recover.*; do + virecovery=`echo $vi_recover/recover.*` + if [ "${virecovery}" != "$vi_recover/recover.*" ]; then + for i in $vi_recover/recover.*; do # Only test files that are readable. if [ ! -r "${i}" ]; then continue @@ -452,6 +467,7 @@ done fi fi +mkdir -m 1777 -p $vi_recover # Make a bounds file for msgs(1) if there isn't one already # "Delete important files with symlink" security hole? >Release-Note: >Audit-Trail: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200005090637.IAA05533>