]> git.eshelyaron.com Git - emacs.git/commitdiff
Make nnml handle invalid non-ASCII headers more consistently
authorLars Ingebrigtsen <larsi@gnus.org>
Fri, 22 Jan 2021 18:07:52 +0000 (19:07 +0100)
committerLars Ingebrigtsen <larsi@gnus.org>
Fri, 22 Jan 2021 18:07:57 +0000 (19:07 +0100)
* lisp/gnus/nnml.el (nnml--encode-headers): New function to
RFC2047-encode invalid Subject/From headers (bug#45925).  This
will make them be displayed more consistently in the Summary
buffer (but still "wrong" sometimes, since there's not that much
we can guess at at this stage, charset wise).
(nnml-parse-head): Use it.

lisp/gnus/nnml.el

index ebececa3ce2b80a905e21e78872c597848b4c9b0..3cdfc7497039d7e8b52900f31a4e8c06f584106e 100644 (file)
@@ -769,8 +769,24 @@ article number.  This function is called narrowed to an article."
       (let ((headers (nnheader-parse-head t)))
        (setf (mail-header-chars  headers) chars)
        (setf (mail-header-number headers) number)
+       ;; If there's non-ASCII raw characters in the data,
+       ;; RFC2047-encode them to avoid having arbitrary data in the
+       ;; .overview file.
+       (nnml--encode-headers headers)
        headers))))
 
+(defun nnml--encode-headers (headers)
+  (let ((subject (mail-header-subject headers))
+       (rfc2047-encoding-type 'mime))
+    (unless (string-match "\\`[[:ascii:]]*\\'" subject)
+      (setf (mail-header-subject headers)
+           (mail-encode-encoded-word-string subject t))))
+  (let ((from (mail-header-from headers))
+       (rfc2047-encoding-type 'address-mime))
+    (unless (string-match "\\`[[:ascii:]]*\\'" from)
+      (setf (mail-header-from headers)
+           (rfc2047-encode-string from t)))))
+
 (defun nnml-get-nov-buffer (group &optional incrementalp)
   (let ((buffer (gnus-get-buffer-create
                  (format " *nnml %soverview %s*"