From 6e7129551ca2ff67732549ae8b1b43276c410c95 Mon Sep 17 00:00:00 2001 From: Artur Malabarba Date: Wed, 18 May 2016 17:58:56 -0300 Subject: [PATCH] * lisp/emacs-lisp/package.el (package--with-response-buffer): Fix some macro locals leaking into body. (Bug#22440) * test/automated/package-test.el (package-test-signed): Manually check all possible values of `package-check-signature'. --- lisp/emacs-lisp/package.el | 37 +++++++++++++++++++--------------- test/automated/package-test.el | 11 ++++++++-- 2 files changed, 30 insertions(+), 18 deletions(-) diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index 58973dfa92..aa18c2d30b 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -1154,6 +1154,8 @@ errors signaled by ERROR-FORM or by BODY). (while (keywordp (car body)) (setq body (cdr (cdr body)))) (macroexp-let2* nil ((url-1 url) + (url-sym (make-symbol "url")) + (b-sym (make-symbol "b-sym")) (noerror-1 noerror)) `(cl-macrolet ((unless-error (body-2 &rest before-body) (let ((err (make-symbol "err"))) @@ -1165,23 +1167,26 @@ errors signaled by ERROR-FORM or by BODY). `(signal (car ,err) (cdr ,err))))) ,@body-2))))) (if (string-match-p "\\`https?:" ,url-1) - (let* ((url (concat ,url-1 ,file)) - (callback (lambda (status) - (let ((b (current-buffer))) - (require 'url-handlers) - (unless-error ,body - (when-let ((er (plist-get status :error))) - (error "Error retrieving: %s %S" url er)) - (with-current-buffer b - (goto-char (point-min)) - (unless (search-forward-regexp "^\r?\n\r?" nil 'noerror) - (error "Error retrieving: %s %S" url "incomprehensible buffer"))) - (url-insert-buffer-contents b url) - (kill-buffer b) - (goto-char (point-min))))))) + (let ((,url-sym (concat ,url-1 ,file))) (if ,async - (unless-error nil (url-retrieve url callback nil 'silent)) - (unless-error ,body (url-insert-file-contents url)))) + (unless-error nil + (url-retrieve ,url-sym + (lambda (status) + (let ((,b-sym (current-buffer))) + (require 'url-handlers) + (unless-error ,body + (when-let ((er (plist-get status :error))) + (error "Error retrieving: %s %S" ,url-sym er)) + (with-current-buffer ,b-sym + (goto-char (point-min)) + (unless (search-forward-regexp "^\r?\n\r?" nil 'noerror) + (error "Error retrieving: %s %S" ,url-sym "incomprehensible buffer"))) + (url-insert-buffer-contents ,b-sym ,url-sym) + (kill-buffer ,b-sym) + (goto-char (point-min))))) + nil + 'silent)) + (unless-error ,body (url-insert-file-contents ,url-sym)))) (unless-error ,body (let ((url (expand-file-name ,file ,url-1))) (unless (file-name-absolute-p url) diff --git a/test/automated/package-test.el b/test/automated/package-test.el index 5580645474..c4c856f303 100644 --- a/test/automated/package-test.el +++ b/test/automated/package-test.el @@ -475,8 +475,15 @@ Must called from within a `tar-mode' buffer." (package-initialize) (package-import-keyring keyring) (package-refresh-contents) - (should (package-install 'signed-good)) - (should-error (package-install 'signed-bad)) + (let ((package-check-signature 'allow-unsigned)) + (should (package-install 'signed-good)) + (should-error (package-install 'signed-bad))) + (let ((package-check-signature t)) + (should (package-install 'signed-good)) + (should-error (package-install 'signed-bad))) + (let ((package-check-signature nil)) + (should (package-install 'signed-good)) + (should (package-install 'signed-bad))) ;; Check if the installed package status is updated. (let ((buf (package-list-packages))) (package-menu-refresh) -- 2.39.2