diff options
Diffstat (limited to 'emacs/23.4/17_all_find-gc-tmpfile.patch')
-rw-r--r-- | emacs/23.4/17_all_find-gc-tmpfile.patch | 135 |
1 files changed, 0 insertions, 135 deletions
diff --git a/emacs/23.4/17_all_find-gc-tmpfile.patch b/emacs/23.4/17_all_find-gc-tmpfile.patch deleted file mode 100644 index 3a7a719..0000000 --- a/emacs/23.4/17_all_find-gc-tmpfile.patch +++ /dev/null @@ -1,135 +0,0 @@ -Fix insecure use of temporary files. -Patch from upstream bzr, backported to Emacs 23.4. -https://bugs.gentoo.org/509830 -CVE-2014-3422 - -revno: 117067 -fixes bug: http://bugs.debian.org/747100 -committer: Glenn Morris <rgm@gnu.org> -branch nick: emacs-24 -timestamp: Mon 2014-05-05 20:53:31 -0700 -message: - find-gc.el misc fixes - - The whole file looks obsolete and/or broken. - - * lisp/emacs-lisp/find-gc.el (find-gc-source-directory): Give it a value. - (find-gc-source-files): Update some names. - (trace-call-tree): Simplify and update. Avoid predictable temp-file names. - ---- emacs-23.4-orig/lisp/emacs-lisp/find-gc.el -+++ emacs-23.4/lisp/emacs-lisp/find-gc.el -@@ -24,14 +24,15 @@ - - ;; Produce in find-gc-unsafe-list the set of all functions that may invoke GC. - ;; This expects the Emacs sources to live in find-gc-source-directory. --;; It creates a temporary working directory /tmp/esrc. - - ;;; Code: - - (defvar find-gc-unsafe-list nil - "The list of unsafe functions is placed here by `find-gc-unsafe'.") - --(defvar find-gc-source-directory) -+(defvar find-gc-source-directory -+ (file-name-as-directory (expand-file-name "src" source-directory)) -+ "Directory containing Emacs C sources.") - - (defvar find-gc-subrs-callers nil - "Alist of users of subrs, from GC testing. -@@ -60,14 +61,14 @@ - "indent.c" "search.c" "regex.c" "undo.c" - "alloc.c" "data.c" "doc.c" "editfns.c" - "callint.c" "eval.c" "fns.c" "print.c" "lread.c" -- "abbrev.c" "syntax.c" "unexec.c" -+ "syntax.c" "unexec.c" - "bytecode.c" "process.c" "callproc.c" "doprnt.c" -- "x11term.c" "x11fns.c")) -+ "xterm.c" "xfns.c")) - - - (defun find-gc-unsafe () - "Return a list of unsafe functions--that is, which can call GC. --Also store it in `find-gc-unsafe'." -+Also store it in `find-gc-unsafe-list'." - (trace-call-tree nil) - (trace-use-tree) - (find-unsafe-funcs 'Fgarbage_collect) -@@ -103,47 +104,38 @@ - - - --(defun trace-call-tree (&optional already-setup) -+(defun trace-call-tree (&optional ignored) - (message "Setting up directories...") -- (or already-setup -- (progn -- ;; Gee, wouldn't a built-in "system" function be handy here. -- (call-process "csh" nil nil nil "-c" "rm -rf /tmp/esrc") -- (call-process "csh" nil nil nil "-c" "mkdir /tmp/esrc") -- (call-process "csh" nil nil nil "-c" -- (format "ln -s %s/*.[ch] /tmp/esrc" -- find-gc-source-directory)))) -- (with-current-buffer (get-buffer-create "*Trace Call Tree*") -- (setq find-gc-subrs-called nil) -- (let ((case-fold-search nil) -- (files find-gc-source-files) -- name entry) -- (while files -- (message "Compiling %s..." (car files)) -- (call-process "csh" nil nil nil "-c" -- (format "gcc -dr -c /tmp/esrc/%s -o /dev/null" -- (car files))) -- (erase-buffer) -- (insert-file-contents (concat "/tmp/esrc/" (car files) ".rtl")) -- (while (re-search-forward ";; Function \\|(call_insn " nil t) -- (if (= (char-after (- (point) 3)) ?o) -- (progn -- (looking-at "[a-zA-Z0-9_]+") -- (setq name (intern (buffer-substring (match-beginning 0) -- (match-end 0)))) -- (message "%s : %s" (car files) name) -- (setq entry (list name) -- find-gc-subrs-called (cons entry find-gc-subrs-called))) -- (if (looking-at ".*\n?.*\"\\([A-Za-z0-9_]+\\)\"") -+ (setq find-gc-subrs-called nil) -+ (let ((case-fold-search nil) -+ (default-directory find-gc-source-directory) -+ (files find-gc-source-files) -+ name entry rtlfile) -+ (dolist (file files) -+ (message "Compiling %s..." file) -+ (call-process "gcc" nil nil nil "-I" "." "-I" "../lib" -+ "-fdump-rtl-expand" "-o" null-device "-c" file) -+ (setq rtlfile -+ (file-expand-wildcards (format "%s.*.expand" file) t)) -+ (if (/= 1 (length rtlfile)) -+ (message "Error compiling `%s'?" file) -+ (with-temp-buffer -+ (insert-file-contents (setq rtlfile (car rtlfile))) -+ (delete-file rtlfile) -+ (while (re-search-forward ";; Function \\|(call_insn " nil t) -+ (if (= (char-after (- (point) 3)) ?o) - (progn -- (setq name (intern (buffer-substring (match-beginning 1) -- (match-end 1)))) -- (or (memq name (cdr entry)) -- (setcdr entry (cons name (cdr entry)))))))) -- (delete-file (concat "/tmp/esrc/" (car files) ".rtl")) -- (setq files (cdr files))))) --) -- -+ (looking-at "[a-zA-Z0-9_]+") -+ (setq name (intern (match-string 0))) -+ (message "%s : %s" (car files) name) -+ (setq entry (list name) -+ find-gc-subrs-called -+ (cons entry find-gc-subrs-called))) -+ (if (looking-at ".*\n?.*\"\\([A-Za-z0-9_]+\\)\"") -+ (progn -+ (setq name (intern (match-string 1))) -+ (or (memq name (cdr entry)) -+ (setcdr entry (cons name (cdr entry))))))))))))) - - (defun trace-use-tree () - (setq find-gc-subrs-callers (mapcar 'list (mapcar 'car find-gc-subrs-called))) |