summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authorDaiki Ueno <ueno@gnu.org>2015-03-31 10:14:13 +0900
committerDaiki Ueno <ueno@gnu.org>2015-03-31 10:14:13 +0900
commit2e4b0c98a77657e787e04ae680403b187b271c21 (patch)
tree859bd5522b93e26094a05f380f83d0ccb7f323da /lisp
parentce88920edb410ed90733763843014470f1d40e28 (diff)
downloademacs-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/ChangeLog5
-rw-r--r--lisp/gnus/plstore.el13
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))))