summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Ingebrigtsen <larsi@gnus.org>2018-04-13 19:28:17 +0200
committerLars Ingebrigtsen <larsi@gnus.org>2018-04-13 19:28:17 +0200
commitde28ae70effd64755e7543fd2cef90f8de5d8019 (patch)
treeb0ed34957213e2c8f6fa450108035cdb2fa1988d
parent9f8c433d96011ed6d6120c614774ad2ce65bcc37 (diff)
downloademacs-de28ae70effd64755e7543fd2cef90f8de5d8019.tar.gz
Make nnimap parse pathological spam headers better
* lisp/gnus/nnimap.el (nnimap-transform-headers): Unfold certain pathological IMAP headers more correctly (bug#25502). Perhaps this function should be re-implemented.
-rw-r--r--lisp/gnus/nnimap.el19
1 files changed, 10 insertions, 9 deletions
diff --git a/lisp/gnus/nnimap.el b/lisp/gnus/nnimap.el
index 0d85a29ff2f..dc51b5f0f0c 100644
--- a/lisp/gnus/nnimap.el
+++ b/lisp/gnus/nnimap.el
@@ -220,15 +220,16 @@ textual parts.")
(cl-return)))
(goto-char (match-end 0))
;; Unfold quoted {number} strings.
- (while (re-search-forward
- "[^]][ (]{\\([0-9]+\\)}\r?\n"
- (save-excursion
- ;; Start of the header section.
- (or (re-search-forward "] {[0-9]+}\r?\n" nil t)
- ;; Start of the next FETCH.
- (re-search-forward "\\* [0-9]+ FETCH" nil t)
- (point-max)))
- t)
+ (while (or (looking-at "[ (]{\\([0-9]+\\)}\r?\n")
+ (re-search-forward
+ "[^]][ (]{\\([0-9]+\\)}\r?\n"
+ (save-excursion
+ ;; Start of the header section.
+ (or (re-search-forward "] {[0-9]+}\r?\n" nil t)
+ ;; Start of the next FETCH.
+ (re-search-forward "\\* [0-9]+ FETCH" nil t)
+ (point-max)))
+ t))
(setq size (string-to-number (match-string 1)))
(delete-region (+ (match-beginning 0) 2) (point))
(setq string (buffer-substring (point) (+ (point) size)))