diff options
author | Daiki Ueno <ueno@gnu.org> | 2015-03-31 10:14:13 +0900 |
---|---|---|
committer | Daiki Ueno <ueno@gnu.org> | 2015-03-31 10:14:13 +0900 |
commit | 2e4b0c98a77657e787e04ae680403b187b271c21 (patch) | |
tree | 859bd5522b93e26094a05f380f83d0ccb7f323da /lisp | |
parent | ce88920edb410ed90733763843014470f1d40e28 (diff) | |
download | emacs-2e4b0c98a77657e787e04ae680403b187b271c21.tar.gz |
plstore.el: Don't cache wrong passphrase
* plstore.el (plstore--decrypt): Clear entry in
`plstore-passphrase-alist' if decryption failed (bug#20030).
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/gnus/ChangeLog | 5 | ||||
-rw-r--r-- | lisp/gnus/plstore.el | 13 |
2 files changed, 15 insertions, 3 deletions
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index 574b2e825c6..5b10d45e814 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog @@ -1,3 +1,8 @@ +2015-03-31 Daiki Ueno <ueno@gnu.org> + + * plstore.el (plstore--decrypt): Clear entry in + `plstore-passphrase-alist' if decryption failed (bug#20030). + 2015-03-28 Adam Sjøgren <asjo@koldfront.dk> * gnus-sum.el (gnus-summary-make-menu-bar): Add "Display HTML images" diff --git a/lisp/gnus/plstore.el b/lisp/gnus/plstore.el index 12a0413dcaf..175e272cb9a 100644 --- a/lisp/gnus/plstore.el +++ b/lisp/gnus/plstore.el @@ -270,9 +270,16 @@ symmetric encryption will be used.") context (cons #'plstore-progress-callback-function (format "Decrypting %s" (plstore-get-file plstore)))) - (setq plain - (epg-decrypt-string context - (plstore--get-encrypted-data plstore))) + (condition-case error + (setq plain + (epg-decrypt-string context + (plstore--get-encrypted-data plstore))) + (error + (let ((entry (assoc (plstore-get-file plstore) + plstore-passphrase-alist))) + (if entry + (setcdr entry nil))) + (signal (car error) (cdr error)))) (plstore--set-secret-alist plstore (car (read-from-string plain))) (plstore--merge-secret plstore) (plstore--set-encrypted-data plstore nil)))) |