From: Lars Ingebrigtsen Date: Sat, 30 Apr 2022 17:14:35 +0000 (+0200) Subject: Avoid regexp overflow in mm-decode-content-transfer-encoding X-Git-Tag: emacs-29.0.90~1931^2~179 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=d90f54db2285002ae969f7c685779c21eaec1605;p=emacs.git Avoid regexp overflow in mm-decode-content-transfer-encoding * lisp/gnus/mm-bodies.el (mm-decode-content-transfer-encoding): The base64 may be huge, so avoid backtracking (bug#55195). --- diff --git a/lisp/gnus/mm-bodies.el b/lisp/gnus/mm-bodies.el index 956449dac14..9f2f80b4726 100644 --- a/lisp/gnus/mm-bodies.el +++ b/lisp/gnus/mm-bodies.el @@ -191,18 +191,17 @@ If TYPE is `text/plain' CRLF->LF translation may occur." ((eq encoding 'base64) (base64-decode-region (point-min) - ;; Some mailers insert whitespace - ;; junk at the end which - ;; base64-decode-region dislikes. - ;; Also remove possible junk which could - ;; have been added by mailing list software. (save-excursion + ;; Some mailers insert whitespace junk at the end which + ;; base64-decode-region dislikes. (goto-char (point-min)) (while (re-search-forward "^[\t ]*\r?\n" nil t) (delete-region (match-beginning 0) (match-end 0))) + ;; Also ignore junk which could have been added by + ;; mailing list software by finding the final line with + ;; base64 text. (goto-char (point-max)) - (when (re-search-backward "^[\t ]*[A-Za-z0-9+/]+=*[\t ]*$" - nil t) + (when (re-search-backward "[A-Za-z0-9+/]{3,3}=?[\t ]*$" nil t) (forward-line)) (point)))) ((memq encoding '(nil 7bit 8bit binary))