bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#12155: 24.1; Potential Security Flaw with `enable-local-eval', `enab


From: Glenn Morris
Subject: bug#12155: 24.1; Potential Security Flaw with `enable-local-eval', `enable-local-variables'
Date: Tue, 07 Aug 2012 14:44:35 -0400
User-agent: Gnus (www.gnus.org), GNU Emacs (www.gnu.org/software/emacs/)

Thanks for the report. This issue is present in 23.2, 23.3, 23.4, 24.1,
and the current trunk, but not in 23.1.

I committed this patch to the emacs-24 branch.
I would appreciate it if others could check this.

This issue should also get an entry in test/automated to stop it recurring.

*** lisp/files.el       2012-07-01 16:38:53 +0000
--- lisp/files.el       2012-08-07 18:41:39 +0000
***************
*** 3107,3117 ****
              ;; Obey `enable-local-eval'.
              ((eq var 'eval)
               (when enable-local-eval
!                (push elt all-vars)
!                (or (eq enable-local-eval t)
!                    (hack-one-local-variable-eval-safep (eval (quote val)))
!                    (safe-local-variable-p var val)
!                    (push elt unsafe-vars))))
              ;; Ignore duplicates (except `mode') in the present list.
              ((and (assq var all-vars) (not (eq var 'mode))) nil)
              ;; Accept known-safe variables.
--- 3107,3122 ----
              ;; Obey `enable-local-eval'.
              ((eq var 'eval)
               (when enable-local-eval
!                (let ((safe (or (hack-one-local-variable-eval-safep
!                                 (eval (quote val)))
!                                ;; In case previously marked safe (bug#5636).
!                                (safe-local-variable-p var val))))
!                  ;; If not safe and e-l-v = :safe, ignore totally.
!                  (when (or safe (not (eq enable-local-variables :safe)))
!                    (push elt all-vars)
!                    (or (eq enable-local-eval t)
!                        safe
!                        (push elt unsafe-vars))))))
              ;; Ignore duplicates (except `mode') in the present list.
              ((and (assq var all-vars) (not (eq var 'mode))) nil)
              ;; Accept known-safe variables.






reply via email to

[Prev in Thread] Current Thread [Next in Thread]