]> git.eshelyaron.com Git - emacs.git/commitdiff
Do not set `trusted-content` in major modes
authorStefan Kangas <stefankangas@gmail.com>
Sun, 26 Jan 2025 13:53:49 +0000 (14:53 +0100)
committerEshel Yaron <me@eshelyaron.com>
Mon, 3 Feb 2025 11:11:21 +0000 (12:11 +0100)
* lisp/progmodes/elisp-mode.el (lisp-interaction-mode):
* lisp/ielm.el (inferior-emacs-lisp-mode): Do not set `trusted-content.
* lisp/ielm.el (ielm):
* lisp/simple.el (get-scratch-buffer-create): Set `trusted-content` here
instead.
* lisp/files.el (trusted-content): Doc fix; warn against setting this
option to :all in a major or mode mode.
Problem reported by Max Nikulin <manikulin@gmail.com>.

(cherry picked from commit 5485ea6aef91c65a0ce300347db3c0ac138ad550)

lisp/files.el
lisp/ielm.el
lisp/progmodes/elisp-mode.el
lisp/simple.el

index 1a1898332b66be95f1b95dd2db2e7ac809ef7e2b..f27c4f41ddf2125e0231aadaa7d43e6df9cf95d4 100644 (file)
@@ -720,11 +720,12 @@ enabled (for example, when it is added to a mode hook).
 Each element of the list should be a string:
 - If it ends in \"/\", it is considered as a directory name and means that
   Emacs should trust all the files whose name has this directory as a prefix.
-- else it is considered as a file name.
+- Otherwise, it is considered a file name.
 Use abbreviated file names.  For example, an entry \"~/mycode/\" means
 that Emacs will trust all the files in your directory \"mycode\".
 This variable can also be set to `:all', in which case Emacs will trust
-all files, which opens a gaping security hole."
+all files, which opens a gaping security hole.  Emacs Lisp authors
+should note that this value must never be set by a major or minor mode."
   :type '(choice (repeat :tag "List" file)
                  (const :tag "Trust everything (DANGEROUS!)" :all))
   :version "30.1")
index 561185a738aa4c502db580ae2e05217cbc15ce39..b3cd02b4dc0b8733d09e39be7c53520648ad969d 100644 (file)
@@ -580,7 +580,6 @@ Customized bindings may be defined in `ielm-map', which currently contains:
        ielm-fontify-input-enable
        (comint-fontify-input-mode))
 
-  (setq-local trusted-content :all)
   (setq comint-prompt-regexp (concat "^" (regexp-quote ielm-prompt)))
   (setq-local paragraph-separate "\\'")
   (setq-local paragraph-start comint-prompt-regexp)
@@ -684,7 +683,8 @@ See `inferior-emacs-lisp-mode' for details."
     (unless (comint-check-proc buf-name)
       (with-current-buffer (get-buffer-create buf-name)
         (unless (zerop (buffer-size)) (setq old-point (point)))
-        (inferior-emacs-lisp-mode)))
+        (inferior-emacs-lisp-mode)
+        (setq-local trusted-content :all)))
     (pop-to-buffer-same-window buf-name)
     (when old-point (push-mark old-point))))
 
index 7d0dd1b60ddc35f70fa2cad58694e33d8d43b416..fe0cee2b565bf5e8579f18609f4fa52661cd5c7c 100644 (file)
@@ -1496,8 +1496,7 @@ Semicolons start comments.
 
 \\{lisp-interaction-mode-map}"
   :abbrev-table nil
-  (setq-local lexical-binding t)
-  (setq-local trusted-content :all))
+  (setq-local lexical-binding t))
 
 ;;; Emacs Lisp Byte-Code mode
 
index 71bde1d098a5f0b219ccdc34328c76a1e342ef80..13319f8fa37f28d5984e0a0a96ac4abaedd36fec 100644 (file)
@@ -10935,7 +10935,9 @@ too short to have a dst element.
           (when initial-scratch-message
             (insert (substitute-command-keys initial-scratch-message))
             (set-buffer-modified-p nil))
-          (funcall initial-major-mode))
+          (funcall initial-major-mode)
+          (when (eq initial-major-mode 'lisp-interaction-mode)
+            (setq-local trusted-content :all)))
         scratch)))
 
 (defun scratch-buffer ()