summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Goaziou <mail@nicolasgoaziou.fr>2017-01-01 10:26:22 +0100
committerNicolas Goaziou <mail@nicolasgoaziou.fr>2017-01-01 10:34:36 +0100
commitdd727cf0cb5319521f71d389a39dc3def541b2ef (patch)
treee10a9650043b2e009f6f8b8f4d5d014bf97f76f6
parentdff9cf9c80748236d2fa3cb5da11c2c94e944b03 (diff)
downloadorg-mode-dd727cf0cb5319521f71d389a39dc3def541b2ef.tar.gz
org-crypt: Fix data loss when providing an empty key
* lisp/org-crypt.el (org-encrypt-entry): Insert original text back upon encryption failure. Reported-by: fxiny <wtimew@libero.it> <http://permalink.gmane.org/gmane.emacs.orgmode/111115>
-rw-r--r--lisp/org-crypt.el6
1 files changed, 5 insertions, 1 deletions
diff --git a/lisp/org-crypt.el b/lisp/org-crypt.el
index 1039996..412aeaf 100644
--- a/lisp/org-crypt.el
+++ b/lisp/org-crypt.el
@@ -183,7 +183,11 @@ See `org-crypt-disable-auto-save'."
(org-end-of-subtree t t)
(org-back-over-empty-lines)
(let ((contents (delete-and-extract-region beg (point))))
- (insert (org-encrypt-string contents crypt-key)))
+ (condition-case err
+ (insert (org-encrypt-string contents crypt-key))
+ ;; If encryption failed, make sure to insert back entry
+ ;; contents in the buffer.
+ (error (insert contents) (error (nth 1 err)))))
(when folded
(goto-char start-heading)
(outline-hide-subtree))