hack-local-variables-filter fix for bug#12155

* lisp/files.el (hack-local-variables-filter): If an eval: form is not
known to be safe, and enable-local-variables is :safe, then ignore
the form totally, as is done for non-eval forms.
This commit is contained in:
Glenn Morris 2012-08-07 14:41:39 -04:00
parent db74a5fcb7
commit f40b9f106b
2 changed files with 16 additions and 5 deletions

View file

@ -1,3 +1,9 @@
2012-08-07 Glenn Morris <rgm@gnu.org>
* files.el (hack-local-variables-filter): If an eval: form is not
known to be safe, and enable-local-variables is :safe, then ignore
the form totally, as is done for non-eval forms. (Bug#12155)
2012-08-07 Chong Yidong <cyd@gnu.org>
* mouse.el (mouse-drag-track): Deactivate the mark before popping.

View file

@ -3107,11 +3107,16 @@ DIR-NAME is the name of the associated directory. Otherwise it is nil."
;; 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))))
(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.