From 67a20bb4b54de1faf840836015389bcc3d7a3eed Mon Sep 17 00:00:00 2001 From: Matt Armstrong Date: Fri, 7 Oct 2022 08:17:50 -0400 Subject: [PATCH] Handle successive mime sections in decoding. rmailsum.el (rmail-epa-decode):Handle blank lines at start. Handle both ending delim and another starting delim. --- lisp/mail/rmail.el | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el index 812e9a201b2..f095d5e9c08 100644 --- a/lisp/mail/rmail.el +++ b/lisp/mail/rmail.el @@ -4693,15 +4693,23 @@ Argument MIME is non-nil if this is a mime message." (save-excursion (goto-char (point-min)) (while (re-search-forward "--------------[0-9a-zA-Z]+\n" nil t) - (let ((delim (concat (substring (match-string 0) 0 -1) "--\n"))) + ;; The ending delimiter is a start delimiter if another section follows. + ;; Otherwise it is an end delimiter, with -- affixed. + (let ((delim (concat (substring (match-string 0) 0 -1) "\\(\\|--\\)\n"))) (when (looking-at "\ Content-Type: text/[a-z]+; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64\n") (goto-char (match-end 0)) + ;; Sometimes the attachment's headers are followed by blank lines + (while (eolp) + (forward-line 1)) (let ((start (point)) (inhibit-read-only t)) - (search-forward delim) + (re-search-forward delim) (forward-line -1) + ;; Sometimes the attachment's contents are followed by blank lines + (while (save-excursion (forward-line -1) (eolp)) + (forward-line -1)) (base64-decode-region start (point)) (forward-line 1))))))) -- 2.39.5