[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#10403: epg--make-temp-file permissions race condition fixes
From: |
Paul Eggert |
Subject: |
bug#10403: epg--make-temp-file permissions race condition fixes |
Date: |
Thu, 29 Dec 2011 14:22:56 -0800 |
User-agent: |
Mozilla/5.0 (X11; Linux i686; rv:8.0) Gecko/20111124 Thunderbird/8.0 |
Tags: patch
=== modified file 'lisp/ChangeLog'
--- lisp/ChangeLog 2011-12-29 21:55:33 +0000
+++ lisp/ChangeLog 2011-12-29 22:08:29 +0000
@@ -1,5 +1,8 @@
2011-12-29 Paul Eggert <eggert@cs.ucla.edu>
+ * epg.el (epg--make-temp-file): Avoid permission race conditions
+ when creating temporary directories and files on older Emacs.
+
* files.el (move-file-to-trash): Preserve default file modes on error.
(Bug#10401)
=== modified file 'lisp/epg.el'
--- lisp/epg.el 2011-11-23 07:03:56 +0000
+++ lisp/epg.el 2011-12-29 22:08:29 +0000
@@ -1951,14 +1951,16 @@
of PREFIX, and expanding against `temporary-file-directory' if necessary),
is guaranteed to point to a newly created empty file.
You can then use `write-region' to write new data into the file."
- (let (tempdir tempfile)
+ (let (tempdir tempfile orig-modes)
(setq prefix (expand-file-name prefix
(if (featurep 'xemacs)
(temp-directory)
temporary-file-directory)))
+ (setq orig-modes (default-file-modes))
(unwind-protect
(let (file)
;; First, create a temporary directory.
+ (set-default-file-modes #o700)
(while (condition-case ()
(progn
(setq tempdir (make-temp-name
@@ -1969,14 +1971,12 @@
(make-directory tempdir))
;; let's try again.
(file-already-exists t)))
- (set-file-modes tempdir 448)
;; Second, create a temporary file in the tempdir.
;; There *is* a race condition between `make-temp-name'
;; and `write-region', but we don't care it since we are
;; in a private directory now.
(setq tempfile (make-temp-name (concat tempdir "/EMU")))
(write-region "" nil tempfile nil 'silent)
- (set-file-modes tempfile 384)
;; Finally, make a hard-link from the tempfile.
(while (condition-case ()
(progn
@@ -1986,6 +1986,7 @@
;; let's try again.
(file-already-exists t)))
file)
+ (set-default-file-modes orig-modes)
;; Cleanup the tempfile.
(and tempfile
(file-exists-p tempfile)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- bug#10403: epg--make-temp-file permissions race condition fixes,
Paul Eggert <=