[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/lisp/net/tramp.el,v [EMACS_22_BASE]
From: |
Michael Albinus |
Subject: |
[Emacs-diffs] Changes to emacs/lisp/net/tramp.el,v [EMACS_22_BASE] |
Date: |
Wed, 11 Jun 2008 17:29:36 +0000 |
CVSROOT: /sources/emacs
Module name: emacs
Branch: EMACS_22_BASE
Changes by: Michael Albinus <albinus> 08/06/11 17:29:36
Index: tramp.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/net/tramp.el,v
retrieving revision 1.124.2.13
retrieving revision 1.124.2.14
diff -u -b -r1.124.2.13 -r1.124.2.14
--- tramp.el 28 Apr 2008 19:30:50 -0000 1.124.2.13
+++ tramp.el 11 Jun 2008 17:29:35 -0000 1.124.2.14
@@ -3779,12 +3779,42 @@
;; File Editing.
+;; `make-temp-file' exists in Emacs only. The third parameter SUFFIX
+;; has been introduced with Emacs 22. We try it, if it fails, we fall
+;; back to `make-temp-name', creating the temporary file immediately
+;; in order to avoid a security hole.
(defsubst tramp-make-temp-file (filename)
- (concat
- (funcall (if (fboundp 'make-temp-file) 'make-temp-file 'make-temp-name)
- (expand-file-name tramp-temp-name-prefix
+ "Create a temporary file (compat function).
+Add the extension of FILENAME, if existing."
+ (let* (file-name-handler-alist
+ (prefix (expand-file-name
+ (symbol-value 'tramp-temp-name-prefix)
(tramp-temporary-file-directory)))
- (file-name-extension filename t)))
+ (extension (file-name-extension filename t))
+ result)
+ (condition-case nil
+ (setq result
+ (funcall (symbol-function 'make-temp-file) prefix nil extension))
+ (error
+ ;; We use our own implementation, taken from files.el.
+ (while
+ (condition-case ()
+ (progn
+ (setq result (concat (make-temp-name prefix) extension))
+ (write-region
+ "" nil result nil 'silent nil
+ ;; 7th parameter is MUSTBENEW in Emacs, and
+ ;; CODING-SYSTEM in XEmacs. It is not a security
+ ;; hole in XEmacs if we cannot use this parameter,
+ ;; because XEmacs uses a user-specific subdirectory
+ ;; with 0700 permissions.
+ (when (not (featurep 'xemacs)) 'excl))
+ nil)
+ (file-already-exists t))
+ ;; The file was somehow created by someone else between
+ ;; `make-temp-name' and `write-region', let's try again.
+ nil)))
+ result))
(defun tramp-handle-file-local-copy (filename)
"Like `file-local-copy' for tramp files."
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] Changes to emacs/lisp/net/tramp.el,v [EMACS_22_BASE],
Michael Albinus <=