diff options
author | Lars Ingebrigtsen <larsi@gnus.org> | 2018-04-13 19:28:17 +0200 |
---|---|---|
committer | Lars Ingebrigtsen <larsi@gnus.org> | 2018-04-13 19:28:17 +0200 |
commit | de28ae70effd64755e7543fd2cef90f8de5d8019 (patch) | |
tree | b0ed34957213e2c8f6fa450108035cdb2fa1988d | |
parent | 9f8c433d96011ed6d6120c614774ad2ce65bcc37 (diff) | |
download | emacs-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.el | 19 |
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))) |