From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: "Davis Herring" Newsgroups: gmane.emacs.devel,gmane.emacs.pretest.bugs Subject: Re: creating backups in temporary directories Date: Mon, 10 Sep 2007 12:23:21 -0700 (PDT) Message-ID: <37871.128.165.123.18.1189452201.squirrel@webmail.lanl.gov> References: <85sl5q5vy6.fsf@lola.goethe.zz> <87y7fii7bz.fsf@gmx.de> <85odgbobf0.fsf@lola.goethe.zz> <85bqcbnx30.fsf@lola.goethe.zz> <37852.128.165.123.18.1189451917.squirrel@webmail.lanl.gov> Reply-To: herring@lanl.gov NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Trace: sea.gmane.org 1189455186 25398 80.91.229.12 (10 Sep 2007 20:13:06 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Mon, 10 Sep 2007 20:13:06 +0000 (UTC) Cc: rms@gnu.org, Andreas Schwab , Stefan Monnier , emacs-pretest-bug@gnu.org, christopher.ian.moore@gmail.com, svenjoac@gmx.de To: "David Kastrup" Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Tue Sep 11 06:12:52 2007 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1IUwLo-0006R7-S7 for ged-emacs-devel@m.gmane.org; Tue, 11 Sep 2007 05:23:45 +0200 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1IUorR-0006NM-T1 for ged-emacs-devel@m.gmane.org; Mon, 10 Sep 2007 15:23:53 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1IUorP-0006M0-5S for emacs-devel@gnu.org; Mon, 10 Sep 2007 15:23:51 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1IUorN-0006KV-RF for emacs-devel@gnu.org; Mon, 10 Sep 2007 15:23:50 -0400 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1IUorN-0006KS-Lv for emacs-devel@gnu.org; Mon, 10 Sep 2007 15:23:49 -0400 Original-Received: from fencepost.gnu.org ([140.186.70.10]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1IUorN-0008IP-DA for emacs-devel@gnu.org; Mon, 10 Sep 2007 15:23:49 -0400 Original-Received: from monty-python.gnu.org ([199.232.76.173]) by fencepost.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1IUor0-0004RX-5g for emacs-pretest-bug@gnu.org; Mon, 10 Sep 2007 15:23:26 -0400 Original-Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1IUorK-0008Hl-UI for emacs-pretest-bug@gnu.org; Mon, 10 Sep 2007 15:23:49 -0400 Original-Received: from mailwasher.lanl.gov ([192.65.95.54] helo=mailwasher-b.lanl.gov) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1IUor3-0008FT-92; Mon, 10 Sep 2007 15:23:29 -0400 Original-Received: from mailrelay2.lanl.gov (mailrelay2.lanl.gov [128.165.4.103]) by mailwasher-b.lanl.gov (8.13.8/8.13.6/(ccn-5)) with ESMTP id l8AJNOjb016644; Mon, 10 Sep 2007 13:23:24 -0600 Original-Received: from webmail1.lanl.gov (webmail1.lanl.gov [128.165.4.106]) by mailrelay2.lanl.gov (8.13.8/8.13.8/(ccn-5)) with ESMTP id l8AJNMnI014135; Mon, 10 Sep 2007 13:23:22 -0600 Original-Received: from webmail1.lanl.gov (localhost.localdomain [127.0.0.1]) by webmail1.lanl.gov (8.12.11.20060308/8.12.11) with ESMTP id l8AJNL33025449; Mon, 10 Sep 2007 13:23:21 -0600 Original-Received: (from apache@localhost) by webmail1.lanl.gov (8.12.11.20060308/8.12.11/Submit) id l8AJNLwx025447; Mon, 10 Sep 2007 12:23:21 -0700 X-Authentication-Warning: webmail1.lanl.gov: apache set sender to herring@lanl.gov using -f Original-Received: from 128.165.123.18 (SquirrelMail authenticated user 196434) by webmail.lanl.gov with HTTP; Mon, 10 Sep 2007 12:23:21 -0700 (PDT) In-Reply-To: <37852.128.165.123.18.1189451917.squirrel@webmail.lanl.gov> User-Agent: SquirrelMail/1.4.8-6.el3.2lanl X-Priority: 3 (Normal) Importance: Normal X-CTN-5-MailScanner-Information: Please see http://network.lanl.gov/email/virus-scan.php X-CTN-5-MailScanner: Found to be clean X-CTN-5-MailScanner-From: herring@lanl.gov X-Detected-Kernel: Linux 2.4-2.6 X-Detected-Kernel: Linux 2.6, seldom 2.4 (older, 4) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:78491 gmane.emacs.pretest.bugs:19824 Archived-At: I wrote: >> Well, then there still is the contorted way of hard linking /tmp/foo >> to /tmp/foo~, opening /tmp/randomfilename for write, renaming it to >> /tmp/foo and then finishing the write operation. > > Why not just rename /tmp/foo to /tmp/foo~, then open /tmp/foo with O_EXCL? > If it fails, then write (again with O_EXCL) to /tmp/randomfile so that > the user's work is on disk -somewhere-, and tell them that they have > enemies. This of course applies to the backup-by-copying case too: then just open /tmp/foo~ with O_EXCL when performing the copy, with /tmp/randomfile~ and "you have enemies" if it fails. If /tmp/foo~ already exists, rename it first to /tmp/backupforthebackup~ rather than unlinking it; we have to get it out of the way and use O_EXCL even if we own it in case the directory's owner is the attacker. (We don't want to unlink it because getting rid of the backup before we start writing the new one is unnecessarily fragile.) Davis -- This product is sold by volume, not by mass. If it appears too dense or too sparse, it is because mass-energy conversion has occurred during shipping.