changeset 35016:731a7aca9458

Avoid security hole allowing attacker to cause user of rcs2log to overwrite arbitrary files, fixing a bug reported by Morten Welinder. Don't put "exit 1" at the end of the exit trap; it's ineffective in POSIX shells.
author Gerd Moellmann <gerd@gnu.org>
date Wed, 03 Jan 2001 12:04:06 +0000
parents ad30dea71688
children 53c3e3f3949b
files lib-src/rcs2log
diffstat 1 files changed, 7 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/lib-src/rcs2log	Wed Jan 03 00:31:18 2001 +0000
+++ b/lib-src/rcs2log	Wed Jan 03 12:04:06 2001 +0000
@@ -28,7 +28,7 @@
 
 Report bugs to <bug-gnu-emacs@gnu.org>.'
 
-Id='$Id: rcs2log,v 1.44 1998/08/12 14:22:14 eggert Exp eggert $'
+Id='$Id: rcs2log,v 1.46 2001/01/02 18:50:14 eggert Exp $'
 
 # Copyright 1992, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc.
 
@@ -300,10 +300,12 @@
 	esac
 esac
 
-llogout=$TMPDIR/rcs2log$$l
-rlogout=$TMPDIR/rcs2log$$r
+logdir=$TMPDIR/rcs2log$$
+llogout=$logdir/l
+rlogout=$logdir/r
 trap exit 1 2 13 15
-trap "rm -f $llogout $rlogout; exit 1" 0
+trap "rm -fr $logdir 2>/dev/null" 0
+(umask 077 && exec mkdir $logdir) || exit
 
 case $datearg in
 ?*) $rlog $rlog_options "$datearg" ${1+"$@"} >$rlogout;;
@@ -670,7 +672,7 @@
 
 # Exit successfully.
 
-exec rm -f $llogout $rlogout
+exec rm -fr $logdir
 
 # Local Variables:
 # tab-width:4