Gnus development mailing list
 help / color / mirror / Atom feed
* Re: master ef14acf: Make nnml handle invalid non-ASCII headers more consistently
       [not found] ` <20210122180802.F0A1E20A10@vcs0.savannah.gnu.org>
@ 2022-12-16 22:42   ` Florian Weimer
  2022-12-17  7:45     ` Eli Zaretskii
  0 siblings, 1 reply; 12+ messages in thread
From: Florian Weimer @ 2022-12-16 22:42 UTC (permalink / raw)
  To: emacs-devel; +Cc: Lars Ingebrigtsen, ding

* Lars Ingebrigtsen:

> branch: master
> commit ef14acfb68bb5b0ce42221e9681b93562f8085eb
> Author: Lars Ingebrigtsen <larsi@gnus.org>
> Commit: Lars Ingebrigtsen <larsi@gnus.org>
>
>     Make nnml handle invalid non-ASCII headers more consistently
>     
>     * 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 | 16 ++++++++++++++++
>  1 file changed, 16 insertions(+)
>
> diff --git a/lisp/gnus/nnml.el b/lisp/gnus/nnml.el
> index ebececa..3cdfc74 100644
> --- a/lisp/gnus/nnml.el
> +++ b/lisp/gnus/nnml.el
> @@ -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))))

Unfortunately, this change in particular causes Gnus to stops storing
messages into nnmail after receiving a message with this header:

From: =?utf-8?b?572X5YuH5YiaKFlvbmdnYW5nIEx1bykgdmlhIEVsZnV0aWxzLWRldmVs?=
 <elfutils-devel@sourceware.org>

The logged error message is:

Mail source (maildir :path …) failed: (error Invalid data for rfc2047 encoding: 罗勇刚(Yonggang Luo) via Elfutils-devel <elfutils-devel@sourceware.org>)

On an older Emacs without this change, it seems that the original header
is written to the .overview file, which sidestep the problem that not
all strings are encodable by the rfc2047 functions.

Thanks,
Florian



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: master ef14acf: Make nnml handle invalid non-ASCII headers more consistently
  2022-12-16 22:42   ` master ef14acf: Make nnml handle invalid non-ASCII headers more consistently Florian Weimer
@ 2022-12-17  7:45     ` Eli Zaretskii
  2022-12-17 14:57       ` Florian Weimer
  0 siblings, 1 reply; 12+ messages in thread
From: Eli Zaretskii @ 2022-12-17  7:45 UTC (permalink / raw)
  To: Florian Weimer; +Cc: Lars Ingebrigtsen, Eric Abrahamsen, emacs-devel, ding

> From: Florian Weimer <fweimer@redhat.com>
> Cc: Lars Ingebrigtsen <larsi@gnus.org>, ding@gnus.org
> Date: Fri, 16 Dec 2022 23:42:21 +0100
> 
> * Lars Ingebrigtsen:
> 
> > branch: master
> > commit ef14acfb68bb5b0ce42221e9681b93562f8085eb
> > Author: Lars Ingebrigtsen <larsi@gnus.org>
> > Commit: Lars Ingebrigtsen <larsi@gnus.org>
> >
> >     Make nnml handle invalid non-ASCII headers more consistently
> >     
> >     * 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 | 16 ++++++++++++++++
> >  1 file changed, 16 insertions(+)
> >
> > diff --git a/lisp/gnus/nnml.el b/lisp/gnus/nnml.el
> > index ebececa..3cdfc74 100644
> > --- a/lisp/gnus/nnml.el
> > +++ b/lisp/gnus/nnml.el
> > @@ -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))))
> 
> Unfortunately, this change in particular causes Gnus to stops storing
> messages into nnmail after receiving a message with this header:
> 
> From: =?utf-8?b?572X5YuH5YiaKFlvbmdnYW5nIEx1bykgdmlhIEVsZnV0aWxzLWRldmVs?=
>  <elfutils-devel@sourceware.org>
> 
> The logged error message is:
> 
> Mail source (maildir :path …) failed: (error Invalid data for rfc2047 encoding: 罗勇刚(Yonggang Luo) via Elfutils-devel <elfutils-devel@sourceware.org>)
> 
> On an older Emacs without this change, it seems that the original header
> is written to the .overview file, which sidestep the problem that not
> all strings are encodable by the rfc2047 functions.

Thanks.  I guess this From header is invalid because there's no space
between the "罗勇刚" and the "(Yonggang Luo)" parts?

Does the naïve patch below solve the problem?

diff --git a/lisp/gnus/nnml.el b/lisp/gnus/nnml.el
index 40e4b9e..7aa445e 100644
--- a/lisp/gnus/nnml.el
+++ b/lisp/gnus/nnml.el
@@ -776,17 +776,22 @@ nnml-parse-head
 	(nnml--encode-headers headers)
 	headers))))
 
+;; RFC2047-encode Subject and From, but leave invalid headers unencoded.
 (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 ((encoded-subject
+             (ignore-errors (mail-encode-encoded-word-string subject t))))
+        (if encoded-subject
+            (setf (mail-header-subject headers) encoded-subject)))))
   (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)))))
+      (let ((encoded-from
+             (ignore-errors (rfc2047-encode-string from t))))
+        (if encoded-from
+            (setf (mail-header-from headers) encoded-from))))))
 
 (defun nnml-get-nov-buffer (group &optional incrementalp)
   (let ((buffer (gnus-get-buffer-create


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: master ef14acf: Make nnml handle invalid non-ASCII headers more consistently
  2022-12-17  7:45     ` Eli Zaretskii
@ 2022-12-17 14:57       ` Florian Weimer
  2022-12-17 15:52         ` Eli Zaretskii
  0 siblings, 1 reply; 12+ messages in thread
From: Florian Weimer @ 2022-12-17 14:57 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Lars Ingebrigtsen, Eric Abrahamsen, emacs-devel, ding

* Eli Zaretskii:

>> From: Florian Weimer <fweimer@redhat.com>
>> Cc: Lars Ingebrigtsen <larsi@gnus.org>, ding@gnus.org
>> Date: Fri, 16 Dec 2022 23:42:21 +0100
>> 
>> * Lars Ingebrigtsen:
>> 
>> > branch: master
>> > commit ef14acfb68bb5b0ce42221e9681b93562f8085eb
>> > Author: Lars Ingebrigtsen <larsi@gnus.org>
>> > Commit: Lars Ingebrigtsen <larsi@gnus.org>
>> >
>> >     Make nnml handle invalid non-ASCII headers more consistently
>> >     
>> >     * 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 | 16 ++++++++++++++++
>> >  1 file changed, 16 insertions(+)
>> >
>> > diff --git a/lisp/gnus/nnml.el b/lisp/gnus/nnml.el
>> > index ebececa..3cdfc74 100644
>> > --- a/lisp/gnus/nnml.el
>> > +++ b/lisp/gnus/nnml.el
>> > @@ -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))))
>> 
>> Unfortunately, this change in particular causes Gnus to stops storing
>> messages into nnmail after receiving a message with this header:
>> 
>> From: =?utf-8?b?572X5YuH5YiaKFlvbmdnYW5nIEx1bykgdmlhIEVsZnV0aWxzLWRldmVs?=
>>  <elfutils-devel@sourceware.org>
>> 
>> The logged error message is:
>> 
>> Mail source (maildir :path …) failed: (error Invalid data for rfc2047 encoding: 罗勇刚(Yonggang Luo) via Elfutils-devel <elfutils-devel@sourceware.org>)
>> 
>> On an older Emacs without this change, it seems that the original header
>> is written to the .overview file, which sidestep the problem that not
>> all strings are encodable by the rfc2047 functions.
>
> Thanks.  I guess this From header is invalid because there's no space
> between the "罗勇刚" and the "(Yonggang Luo)" parts?

Yes, that seems to be what's tripping the encoder.  But I'm not sure if
proper encoding of ( or ) (as =28 or =29 using the Q encoding, or using
the B encoding as in the raw text) is actually invalid.  RFC 2047 only
talks about unencoded ( or ).  In contrast, encoded ( and ) are valid
syntax at the RFC 822 layer because encoding hides them.

> Does the naïve patch below solve the problem?
>
> diff --git a/lisp/gnus/nnml.el b/lisp/gnus/nnml.el
> index 40e4b9e..7aa445e 100644
> --- a/lisp/gnus/nnml.el
> +++ b/lisp/gnus/nnml.el
> @@ -776,17 +776,22 @@ nnml-parse-head
>  	(nnml--encode-headers headers)
>  	headers))))
>  
> +;; RFC2047-encode Subject and From, but leave invalid headers unencoded.
>  (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 ((encoded-subject
> +             (ignore-errors (mail-encode-encoded-word-string subject t))))
> +        (if encoded-subject
> +            (setf (mail-header-subject headers) encoded-subject)))))
>    (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)))))
> +      (let ((encoded-from
> +             (ignore-errors (rfc2047-encode-string from t))))
> +        (if encoded-from
> +            (setf (mail-header-from headers) encoded-from))))))
>  
>  (defun nnml-get-nov-buffer (group &optional incrementalp)
>    (let ((buffer (gnus-get-buffer-create

Thanks!

I somehow can't reproduce the original issue.  I expect more problematic
messages to arrive next week, though, and will report then how it goes.

Florian



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: master ef14acf: Make nnml handle invalid non-ASCII headers more consistently
  2022-12-17 14:57       ` Florian Weimer
@ 2022-12-17 15:52         ` Eli Zaretskii
  2022-12-19 13:59           ` Florian Weimer
  0 siblings, 1 reply; 12+ messages in thread
From: Eli Zaretskii @ 2022-12-17 15:52 UTC (permalink / raw)
  To: Florian Weimer; +Cc: larsi, eric, emacs-devel, ding

> From: Florian Weimer <fweimer@redhat.com>
> Cc: Lars Ingebrigtsen <larsi@gnus.org>,  Eric Abrahamsen
>  <eric@ericabrahamsen.net>,  emacs-devel@gnu.org,  ding@gnus.org
> Date: Sat, 17 Dec 2022 15:57:18 +0100
> 
> >> Mail source (maildir :path …) failed: (error Invalid data for rfc2047 encoding: 罗勇刚(Yonggang Luo) via Elfutils-devel <elfutils-devel@sourceware.org>)
> >> 
> >> On an older Emacs without this change, it seems that the original header
> >> is written to the .overview file, which sidestep the problem that not
> >> all strings are encodable by the rfc2047 functions.
> >
> > Thanks.  I guess this From header is invalid because there's no space
> > between the "罗勇刚" and the "(Yonggang Luo)" parts?
> 
> Yes, that seems to be what's tripping the encoder.  But I'm not sure if
> proper encoding of ( or ) (as =28 or =29 using the Q encoding, or using
> the B encoding as in the raw text) is actually invalid.  RFC 2047 only
> talks about unencoded ( or ).  In contrast, encoded ( and ) are valid
> syntax at the RFC 822 layer because encoding hides them.

I'm not sure this is related.  I was talking about the missing SPC
character before the parentheses.  But I know very little about this
stuff, so maybe I'm just misunderstanding you.

> > Does the naïve patch below solve the problem?
> >
> > diff --git a/lisp/gnus/nnml.el b/lisp/gnus/nnml.el
> > index 40e4b9e..7aa445e 100644
> > --- a/lisp/gnus/nnml.el
> > +++ b/lisp/gnus/nnml.el
> > @@ -776,17 +776,22 @@ nnml-parse-head
> >  	(nnml--encode-headers headers)
> >  	headers))))
> >  
> > +;; RFC2047-encode Subject and From, but leave invalid headers unencoded.
> >  (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 ((encoded-subject
> > +             (ignore-errors (mail-encode-encoded-word-string subject t))))
> > +        (if encoded-subject
> > +            (setf (mail-header-subject headers) encoded-subject)))))
> >    (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)))))
> > +      (let ((encoded-from
> > +             (ignore-errors (rfc2047-encode-string from t))))
> > +        (if encoded-from
> > +            (setf (mail-header-from headers) encoded-from))))))
> >  
> >  (defun nnml-get-nov-buffer (group &optional incrementalp)
> >    (let ((buffer (gnus-get-buffer-create
> 
> Thanks!
> 
> I somehow can't reproduce the original issue.  I expect more problematic
> messages to arrive next week, though, and will report then how it goes.

Thanks.  Please do get back, even if you don't succeed in reproducing.
I tested the code by invoking the body of nnml--encode-headers
directly on the header you provided, so I'm quite sure the fix will
prevent the error and will restore Gnus to how it worked before this
change, when such problematic headers are used.  So I'd like to
install this fix on the release branch for the upcoming Emacs 29.1,
and need your feedback.

TIA


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: master ef14acf: Make nnml handle invalid non-ASCII headers more consistently
  2022-12-17 15:52         ` Eli Zaretskii
@ 2022-12-19 13:59           ` Florian Weimer
  2022-12-19 17:07             ` Eli Zaretskii
  0 siblings, 1 reply; 12+ messages in thread
From: Florian Weimer @ 2022-12-19 13:59 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: larsi, eric, emacs-devel, ding

* Eli Zaretskii:

>> From: Florian Weimer <fweimer@redhat.com>
>> Cc: Lars Ingebrigtsen <larsi@gnus.org>,  Eric Abrahamsen
>>  <eric@ericabrahamsen.net>,  emacs-devel@gnu.org,  ding@gnus.org
>> Date: Sat, 17 Dec 2022 15:57:18 +0100
>> 
>> >> Mail source (maildir :path …) failed: (error Invalid data for rfc2047 encoding: 罗勇刚(Yonggang Luo) via Elfutils-devel <elfutils-devel@sourceware.org>)
>> >> 
>> >> On an older Emacs without this change, it seems that the original header
>> >> is written to the .overview file, which sidestep the problem that not
>> >> all strings are encodable by the rfc2047 functions.
>> >
>> > Thanks.  I guess this From header is invalid because there's no space
>> > between the "罗勇刚" and the "(Yonggang Luo)" parts?
>> 
>> Yes, that seems to be what's tripping the encoder.  But I'm not sure if
>> proper encoding of ( or ) (as =28 or =29 using the Q encoding, or using
>> the B encoding as in the raw text) is actually invalid.  RFC 2047 only
>> talks about unencoded ( or ).  In contrast, encoded ( and ) are valid
>> syntax at the RFC 822 layer because encoding hides them.
>
> I'm not sure this is related.  I was talking about the missing SPC
> character before the parentheses.  But I know very little about this
> stuff, so maybe I'm just misunderstanding you.

I was responding to “this From header is invalid”.  I'm not sure if the
original message is actually malformed.

>> I somehow can't reproduce the original issue.  I expect more problematic
>> messages to arrive next week, though, and will report then how it goes.
>
> Thanks.  Please do get back, even if you don't succeed in reproducing.

As I expected, I could reproduce the issue with new mail.  I'm happy to
report that replacing nnml--encode-headers with your new version fixes
the issue.

Going back to older mail, I see that previously the From: header was
written in encoded form to .overview (slightly wrapped to avoid SMTP
issues):

8523 Re: [PATCH 1/7] Rename 'hello2.spec.' -> 'hello2.spec' 'hello3.spec.' -> 'hello3.spec' =?utf-8?b?572X5YuH5YiaKFlvbmdnYW5nIEx1bykgdmlhIEVsZnV0aWxzLWRldmVs?= <elfutils-devel@sourceware.org> Thu, 24 Nov 2022 16:27:56 +0800 <CAE2XoE_RBNdsPZMLiSQKJroyx4ycvqf7y+VDbuY=-XbhOwsL8g@mail.gmail.com>
  <20220920084307.1696-1-luoyonggang@gmail.com> <20220920084307.1696-2-luoyonggang@gmail.com> <Y0nH98k6YumMRSz0@wildebeest.org> <CAE2XoE-xfFQNMN1JYSi8Kp+-DUUookRkzwUV+OvKGfnZKDXKEA@mail.gmail.com> <20221019194930.GC24703@redhat.com> <3bf19d05c8976411432709fae1cc2bcc2d21d700.camel@klomp.org>
  <586fbfd512763e539f0d06e8ffa308da34be5368.camel@wildebeest.org> 705 32 Xref: oldenburg.str.redhat.com lists.sourceware.elfutils-devel:8523 Cc: "Frank Ch. Eigler" <fche@redhat.com>, elfutils-devel@sourceware.org To: Mark Wielaard <aegon@wildebeest.org>

Now it uses unencoded form:

8762 Re: [PATCH v2 13/16] lib: isatty is not available on windows 罗勇刚(Yonggang Luo) via Elfutils-devel <elfutils-devel@sourceware.org> Mon, 19 Dec 2022 20:32:48 +0800 <CAE2XoE-Xv6+4Npj38ih_nPMZ8e6ph7oS8wxvKFx1uE-sRfH_kw@mail.gmail.com> <20221217165213.152-1-luoyonggang@gmail.com>
  <20221217165213.152-14-luoyonggang@gmail.com> 1074 43 Xref: oldenburg.str.redhat.com lists.sourceware.elfutils-devel:8762 To: elfutils-devel@sourceware.org

I assume that there is some protection in place that tabs are not
possible here?

Thanks,
Florian



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: master ef14acf: Make nnml handle invalid non-ASCII headers more consistently
  2022-12-19 13:59           ` Florian Weimer
@ 2022-12-19 17:07             ` Eli Zaretskii
  2022-12-19 17:27               ` Florian Weimer
  2022-12-19 17:48               ` Eric Abrahamsen
  0 siblings, 2 replies; 12+ messages in thread
From: Eli Zaretskii @ 2022-12-19 17:07 UTC (permalink / raw)
  To: Florian Weimer; +Cc: larsi, eric, emacs-devel, ding

> From: Florian Weimer <fweimer@redhat.com>
> Cc: larsi@gnus.org,  eric@ericabrahamsen.net,  emacs-devel@gnu.org,
>   ding@gnus.org
> Date: Mon, 19 Dec 2022 14:59:17 +0100
> 
> > I'm not sure this is related.  I was talking about the missing SPC
> > character before the parentheses.  But I know very little about this
> > stuff, so maybe I'm just misunderstanding you.
> 
> I was responding to “this From header is invalid”.  I'm not sure if the
> original message is actually malformed.

Ah, okay.  I'm not sure, either, although I don't think I've ever seen
such addresses.  But I'm no expert.  Maybe rfc2047.el needs to be more
tolerant and less dependent on whitespace; I'll leave that to experts.
But even if there's nothing wrong with this particular header, I think
you will agree that signaling and error and thus failing the entire
storage of the message is not TRT, especially since the change which
causes this was done for basically aesthetic reasons.  Falling back to
previous behavior in these cases is better, I think.

> As I expected, I could reproduce the issue with new mail.  I'm happy to
> report that replacing nnml--encode-headers with your new version fixes
> the issue.

Thanks, so I've now installed this on the emacs-29 branch, for the
upcoming Emacs 29.1.

> Going back to older mail, I see that previously the From: header was
> written in encoded form to .overview (slightly wrapped to avoid SMTP
> issues):
> 
> 8523 Re: [PATCH 1/7] Rename 'hello2.spec.' -> 'hello2.spec' 'hello3.spec.' -> 'hello3.spec' =?utf-8?b?572X5YuH5YiaKFlvbmdnYW5nIEx1bykgdmlhIEVsZnV0aWxzLWRldmVs?= <elfutils-devel@sourceware.org> Thu, 24 Nov 2022 16:27:56 +0800 <CAE2XoE_RBNdsPZMLiSQKJroyx4ycvqf7y+VDbuY=-XbhOwsL8g@mail.gmail.com>
>   <20220920084307.1696-1-luoyonggang@gmail.com> <20220920084307.1696-2-luoyonggang@gmail.com> <Y0nH98k6YumMRSz0@wildebeest.org> <CAE2XoE-xfFQNMN1JYSi8Kp+-DUUookRkzwUV+OvKGfnZKDXKEA@mail.gmail.com> <20221019194930.GC24703@redhat.com> <3bf19d05c8976411432709fae1cc2bcc2d21d700.camel@klomp.org>
>   <586fbfd512763e539f0d06e8ffa308da34be5368.camel@wildebeest.org> 705 32 Xref: oldenburg.str.redhat.com lists.sourceware.elfutils-devel:8523 Cc: "Frank Ch. Eigler" <fche@redhat.com>, elfutils-devel@sourceware.org To: Mark Wielaard <aegon@wildebeest.org>
> 
> Now it uses unencoded form:
> 
> 8762 Re: [PATCH v2 13/16] lib: isatty is not available on windows 罗勇刚(Yonggang Luo) via Elfutils-devel <elfutils-devel@sourceware.org> Mon, 19 Dec 2022 20:32:48 +0800 <CAE2XoE-Xv6+4Npj38ih_nPMZ8e6ph7oS8wxvKFx1uE-sRfH_kw@mail.gmail.com> <20221217165213.152-1-luoyonggang@gmail.com>
>   <20221217165213.152-14-luoyonggang@gmail.com> 1074 43 Xref: oldenburg.str.redhat.com lists.sourceware.elfutils-devel:8762 To: elfutils-devel@sourceware.org

Is that a problem?  I think this was part of the reason for that
change in nnml.el.

> I assume that there is some protection in place that tabs are not
> possible here?

Tabs where, and what kind of protection are we talking about?

Again, I'm not an expert on this and don't use Gnus, so apologies for
possibly dumb questions.


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: master ef14acf: Make nnml handle invalid non-ASCII headers more consistently
  2022-12-19 17:07             ` Eli Zaretskii
@ 2022-12-19 17:27               ` Florian Weimer
  2022-12-19 17:44                 ` Eli Zaretskii
  2022-12-19 17:48               ` Eric Abrahamsen
  1 sibling, 1 reply; 12+ messages in thread
From: Florian Weimer @ 2022-12-19 17:27 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: larsi, eric, emacs-devel, ding

* Eli Zaretskii:

>> As I expected, I could reproduce the issue with new mail.  I'm happy to
>> report that replacing nnml--encode-headers with your new version fixes
>> the issue.
>
> Thanks, so I've now installed this on the emacs-29 branch, for the
> upcoming Emacs 29.1.

It's a denial-of-service issue, so it should be backported to 28 if
possible, too.

>> Going back to older mail, I see that previously the From: header was
>> written in encoded form to .overview (slightly wrapped to avoid SMTP
>> issues):
>> 
>> 8523 Re: [PATCH 1/7] Rename 'hello2.spec.' -> 'hello2.spec' 'hello3.spec.' -> 'hello3.spec' =?utf-8?b?572X5YuH5YiaKFlvbmdnYW5nIEx1bykgdmlhIEVsZnV0aWxzLWRldmVs?= <elfutils-devel@sourceware.org> Thu, 24 Nov 2022 16:27:56 +0800 <CAE2XoE_RBNdsPZMLiSQKJroyx4ycvqf7y+VDbuY=-XbhOwsL8g@mail.gmail.com>
>>   <20220920084307.1696-1-luoyonggang@gmail.com> <20220920084307.1696-2-luoyonggang@gmail.com> <Y0nH98k6YumMRSz0@wildebeest.org> <CAE2XoE-xfFQNMN1JYSi8Kp+-DUUookRkzwUV+OvKGfnZKDXKEA@mail.gmail.com> <20221019194930.GC24703@redhat.com> <3bf19d05c8976411432709fae1cc2bcc2d21d700.camel@klomp.org>
>>   <586fbfd512763e539f0d06e8ffa308da34be5368.camel@wildebeest.org> 705 32 Xref: oldenburg.str.redhat.com lists.sourceware.elfutils-devel:8523 Cc: "Frank Ch. Eigler" <fche@redhat.com>, elfutils-devel@sourceware.org To: Mark Wielaard <aegon@wildebeest.org>
>> 
>> Now it uses unencoded form:
>> 
>> 8762 Re: [PATCH v2 13/16] lib: isatty is not available on windows 罗勇刚(Yonggang Luo) via Elfutils-devel <elfutils-devel@sourceware.org> Mon, 19 Dec 2022 20:32:48 +0800 <CAE2XoE-Xv6+4Npj38ih_nPMZ8e6ph7oS8wxvKFx1uE-sRfH_kw@mail.gmail.com> <20221217165213.152-1-luoyonggang@gmail.com>
>>   <20221217165213.152-14-luoyonggang@gmail.com> 1074 43 Xref: oldenburg.str.redhat.com lists.sourceware.elfutils-devel:8762 To: elfutils-devel@sourceware.org
>
> Is that a problem?  I think this was part of the reason for that
> change in nnml.el.

I don't know.

>> I assume that there is some protection in place that tabs are not
>> possible here?
>
> Tabs where, and what kind of protection are we talking about?

The .overview file is in tab-separated-values format, and I think the
code is supposed to replace tabs with spaces before the lines are
written.  But mail-encode-encoded-word-string/rfc2047-encode-string
generally does not replace tabs, so your change shouldn't make things
worse at least.

Thanks,
Florian



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: master ef14acf: Make nnml handle invalid non-ASCII headers more consistently
  2022-12-19 17:27               ` Florian Weimer
@ 2022-12-19 17:44                 ` Eli Zaretskii
  0 siblings, 0 replies; 12+ messages in thread
From: Eli Zaretskii @ 2022-12-19 17:44 UTC (permalink / raw)
  To: Florian Weimer; +Cc: larsi, eric, emacs-devel, ding

> From: Florian Weimer <fweimer@redhat.com>
> Cc: larsi@gnus.org,  eric@ericabrahamsen.net,  emacs-devel@gnu.org,
>   ding@gnus.org
> Date: Mon, 19 Dec 2022 18:27:09 +0100
> 
> * Eli Zaretskii:
> 
> >> As I expected, I could reproduce the issue with new mail.  I'm happy to
> >> report that replacing nnml--encode-headers with your new version fixes
> >> the issue.
> >
> > Thanks, so I've now installed this on the emacs-29 branch, for the
> > upcoming Emacs 29.1.
> 
> It's a denial-of-service issue, so it should be backported to 28 if
> possible, too.

We don't plan on any more releases from the emacs-28 branch.  I guess
distros will do the backporting, though.

> >> I assume that there is some protection in place that tabs are not
> >> possible here?
> >
> > Tabs where, and what kind of protection are we talking about?
> 
> The .overview file is in tab-separated-values format, and I think the
> code is supposed to replace tabs with spaces before the lines are
> written.  But mail-encode-encoded-word-string/rfc2047-encode-string
> generally does not replace tabs, so your change shouldn't make things
> worse at least.

OK, thanks.


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: master ef14acf: Make nnml handle invalid non-ASCII headers more consistently
  2022-12-19 17:07             ` Eli Zaretskii
  2022-12-19 17:27               ` Florian Weimer
@ 2022-12-19 17:48               ` Eric Abrahamsen
  2022-12-19 17:58                 ` Eli Zaretskii
  1 sibling, 1 reply; 12+ messages in thread
From: Eric Abrahamsen @ 2022-12-19 17:48 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Florian Weimer, larsi, emacs-devel, ding


On 12/19/22 19:07 PM, Eli Zaretskii wrote:
>> From: Florian Weimer <fweimer@redhat.com>
>> Cc: larsi@gnus.org,  eric@ericabrahamsen.net,  emacs-devel@gnu.org,
>>   ding@gnus.org
>> Date: Mon, 19 Dec 2022 14:59:17 +0100
>> 
>> > I'm not sure this is related.  I was talking about the missing SPC
>> > character before the parentheses.  But I know very little about this
>> > stuff, so maybe I'm just misunderstanding you.
>> 
>> I was responding to “this From header is invalid”.  I'm not sure if the
>> original message is actually malformed.
>
> Ah, okay.  I'm not sure, either, although I don't think I've ever seen
> such addresses.  But I'm no expert.  Maybe rfc2047.el needs to be more
> tolerant and less dependent on whitespace; I'll leave that to experts.
> But even if there's nothing wrong with this particular header, I think
> you will agree that signaling and error and thus failing the entire
> storage of the message is not TRT, especially since the change which
> causes this was done for basically aesthetic reasons.  Falling back to
> previous behavior in these cases is better, I think.
>
>> As I expected, I could reproduce the issue with new mail.  I'm happy to
>> report that replacing nnml--encode-headers with your new version fixes
>> the issue.
>
> Thanks, so I've now installed this on the emacs-29 branch, for the
> upcoming Emacs 29.1.
>
>> Going back to older mail, I see that previously the From: header was
>> written in encoded form to .overview (slightly wrapped to avoid SMTP
>> issues):
>> 
>> 8523 Re: [PATCH 1/7] Rename 'hello2.spec.' -> 'hello2.spec'
>> 'hello3.spec.' -> 'hello3.spec'
>> =?utf-8?b?572X5YuH5YiaKFlvbmdnYW5nIEx1bykgdmlhIEVsZnV0aWxzLWRldmVs?=
>> <elfutils-devel@sourceware.org> Thu, 24 Nov 2022 16:27:56 +0800
>> <CAE2XoE_RBNdsPZMLiSQKJroyx4ycvqf7y+VDbuY=-XbhOwsL8g@mail.gmail.com>
>>   <20220920084307.1696-1-luoyonggang@gmail.com>
>> <20220920084307.1696-2-luoyonggang@gmail.com>
>> <Y0nH98k6YumMRSz0@wildebeest.org>
>> <CAE2XoE-xfFQNMN1JYSi8Kp+-DUUookRkzwUV+OvKGfnZKDXKEA@mail.gmail.com>
>> <20221019194930.GC24703@redhat.com>
>> <3bf19d05c8976411432709fae1cc2bcc2d21d700.camel@klomp.org>
>>   <586fbfd512763e539f0d06e8ffa308da34be5368.camel@wildebeest.org>
>> 705 32 Xref: oldenburg.str.redhat.com
>> lists.sourceware.elfutils-devel:8523 Cc: "Frank Ch. Eigler"
>> <fche@redhat.com>, elfutils-devel@sourceware.org To: Mark Wielaard
>> <aegon@wildebeest.org>
>> 
>> Now it uses unencoded form:
>> 
>> 8762 Re: [PATCH v2 13/16] lib: isatty is not available on windows 罗
>> 勇刚(Yonggang Luo) via Elfutils-devel
>> <elfutils-devel@sourceware.org> Mon, 19 Dec 2022 20:32:48 +0800
>> <CAE2XoE-Xv6+4Npj38ih_nPMZ8e6ph7oS8wxvKFx1uE-sRfH_kw@mail.gmail.com>
>> <20221217165213.152-1-luoyonggang@gmail.com>
>>   <20221217165213.152-14-luoyonggang@gmail.com> 1074 43 Xref:
>> oldenburg.str.redhat.com lists.sourceware.elfutils-devel:8762 To:
>> elfutils-devel@sourceware.org
>
> Is that a problem?  I think this was part of the reason for that
> change in nnml.el.

It would definitely be a problem to change the on-disk representation of
data in the .overview files! Lots of code depends on a very specific
format for those files; I've broken things badly in the past by removing
header encoding there.


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: master ef14acf: Make nnml handle invalid non-ASCII headers more consistently
  2022-12-19 17:48               ` Eric Abrahamsen
@ 2022-12-19 17:58                 ` Eli Zaretskii
  2022-12-19 18:05                   ` Eric Abrahamsen
  0 siblings, 1 reply; 12+ messages in thread
From: Eli Zaretskii @ 2022-12-19 17:58 UTC (permalink / raw)
  To: Eric Abrahamsen; +Cc: fweimer, larsi, emacs-devel, ding

> From: Eric Abrahamsen <eric@ericabrahamsen.net>
> Cc: Florian Weimer <fweimer@redhat.com>,  larsi@gnus.org,
>   emacs-devel@gnu.org,  ding@gnus.org
> Date: Mon, 19 Dec 2022 09:48:15 -0800
> 
> On 12/19/22 19:07 PM, Eli Zaretskii wrote:
> >> Going back to older mail, I see that previously the From: header was
> >> written in encoded form to .overview (slightly wrapped to avoid SMTP
> >> issues):
> >> 
> >> 8523 Re: [PATCH 1/7] Rename 'hello2.spec.' -> 'hello2.spec'
> >> 'hello3.spec.' -> 'hello3.spec'
> >> =?utf-8?b?572X5YuH5YiaKFlvbmdnYW5nIEx1bykgdmlhIEVsZnV0aWxzLWRldmVs?=
> >> <elfutils-devel@sourceware.org> Thu, 24 Nov 2022 16:27:56 +0800
> >> <CAE2XoE_RBNdsPZMLiSQKJroyx4ycvqf7y+VDbuY=-XbhOwsL8g@mail.gmail.com>
> >>   <20220920084307.1696-1-luoyonggang@gmail.com>
> >> <20220920084307.1696-2-luoyonggang@gmail.com>
> >> <Y0nH98k6YumMRSz0@wildebeest.org>
> >> <CAE2XoE-xfFQNMN1JYSi8Kp+-DUUookRkzwUV+OvKGfnZKDXKEA@mail.gmail.com>
> >> <20221019194930.GC24703@redhat.com>
> >> <3bf19d05c8976411432709fae1cc2bcc2d21d700.camel@klomp.org>
> >>   <586fbfd512763e539f0d06e8ffa308da34be5368.camel@wildebeest.org>
> >> 705 32 Xref: oldenburg.str.redhat.com
> >> lists.sourceware.elfutils-devel:8523 Cc: "Frank Ch. Eigler"
> >> <fche@redhat.com>, elfutils-devel@sourceware.org To: Mark Wielaard
> >> <aegon@wildebeest.org>
> >> 
> >> Now it uses unencoded form:
> >> 
> >> 8762 Re: [PATCH v2 13/16] lib: isatty is not available on windows 罗
> >> 勇刚(Yonggang Luo) via Elfutils-devel
> >> <elfutils-devel@sourceware.org> Mon, 19 Dec 2022 20:32:48 +0800
> >> <CAE2XoE-Xv6+4Npj38ih_nPMZ8e6ph7oS8wxvKFx1uE-sRfH_kw@mail.gmail.com>
> >> <20221217165213.152-1-luoyonggang@gmail.com>
> >>   <20221217165213.152-14-luoyonggang@gmail.com> 1074 43 Xref:
> >> oldenburg.str.redhat.com lists.sourceware.elfutils-devel:8762 To:
> >> elfutils-devel@sourceware.org
> >
> > Is that a problem?  I think this was part of the reason for that
> > change in nnml.el.
> 
> It would definitely be a problem to change the on-disk representation of
> data in the .overview files! Lots of code depends on a very specific
> format for those files; I've broken things badly in the past by removing
> header encoding there.

But this change is there since Emacs 28, so if it's a problem, someone
would have hollered already, no?

Or are you saying that the changes I installed are causing the
difference?  If so, I don't see how that could happen, since the
change just ignores any errors signaled by rfc2047, and if rfc2047
does signal an error, what is stored in the file is the same string as
what we did before the new function nnml--encode-headers was added and
we started using it.

So unless I'm missing something, the changes I installed cannot cause
any new problems we didn't have since quite long ago.


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: master ef14acf: Make nnml handle invalid non-ASCII headers more consistently
  2022-12-19 17:58                 ` Eli Zaretskii
@ 2022-12-19 18:05                   ` Eric Abrahamsen
  2022-12-19 18:16                     ` Eli Zaretskii
  0 siblings, 1 reply; 12+ messages in thread
From: Eric Abrahamsen @ 2022-12-19 18:05 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: fweimer, larsi, emacs-devel, ding

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Eric Abrahamsen <eric@ericabrahamsen.net>
>> Cc: Florian Weimer <fweimer@redhat.com>,  larsi@gnus.org,
>>   emacs-devel@gnu.org,  ding@gnus.org
>> Date: Mon, 19 Dec 2022 09:48:15 -0800
>> 
>> On 12/19/22 19:07 PM, Eli Zaretskii wrote:
>> >> Going back to older mail, I see that previously the From: header was
>> >> written in encoded form to .overview (slightly wrapped to avoid SMTP
>> >> issues):
>> >> 
>> >> 8523 Re: [PATCH 1/7] Rename 'hello2.spec.' -> 'hello2.spec'
>> >> 'hello3.spec.' -> 'hello3.spec'
>> >> =?utf-8?b?572X5YuH5YiaKFlvbmdnYW5nIEx1bykgdmlhIEVsZnV0aWxzLWRldmVs?=
>> >> <elfutils-devel@sourceware.org> Thu, 24 Nov 2022 16:27:56 +0800
>> >> <CAE2XoE_RBNdsPZMLiSQKJroyx4ycvqf7y+VDbuY=-XbhOwsL8g@mail.gmail.com>
>> >>   <20220920084307.1696-1-luoyonggang@gmail.com>
>> >> <20220920084307.1696-2-luoyonggang@gmail.com>
>> >> <Y0nH98k6YumMRSz0@wildebeest.org>
>> >> <CAE2XoE-xfFQNMN1JYSi8Kp+-DUUookRkzwUV+OvKGfnZKDXKEA@mail.gmail.com>
>> >> <20221019194930.GC24703@redhat.com>
>> >> <3bf19d05c8976411432709fae1cc2bcc2d21d700.camel@klomp.org>
>> >>   <586fbfd512763e539f0d06e8ffa308da34be5368.camel@wildebeest.org>
>> >> 705 32 Xref: oldenburg.str.redhat.com
>> >> lists.sourceware.elfutils-devel:8523 Cc: "Frank Ch. Eigler"
>> >> <fche@redhat.com>, elfutils-devel@sourceware.org To: Mark Wielaard
>> >> <aegon@wildebeest.org>
>> >> 
>> >> Now it uses unencoded form:
>> >> 
>> >> 8762 Re: [PATCH v2 13/16] lib: isatty is not available on windows 罗
>> >> 勇刚(Yonggang Luo) via Elfutils-devel
>> >> <elfutils-devel@sourceware.org> Mon, 19 Dec 2022 20:32:48 +0800
>> >> <CAE2XoE-Xv6+4Npj38ih_nPMZ8e6ph7oS8wxvKFx1uE-sRfH_kw@mail.gmail.com>
>> >> <20221217165213.152-1-luoyonggang@gmail.com>
>> >>   <20221217165213.152-14-luoyonggang@gmail.com> 1074 43 Xref:
>> >> oldenburg.str.redhat.com lists.sourceware.elfutils-devel:8762 To:
>> >> elfutils-devel@sourceware.org
>> >
>> > Is that a problem?  I think this was part of the reason for that
>> > change in nnml.el.
>> 
>> It would definitely be a problem to change the on-disk representation of
>> data in the .overview files! Lots of code depends on a very specific
>> format for those files; I've broken things badly in the past by removing
>> header encoding there.
>
> But this change is there since Emacs 28, so if it's a problem, someone
> would have hollered already, no?
>
> Or are you saying that the changes I installed are causing the
> difference?  If so, I don't see how that could happen, since the
> change just ignores any errors signaled by rfc2047, and if rfc2047
> does signal an error, what is stored in the file is the same string as
> what we did before the new function nnml--encode-headers was added and
> we started using it.
>
> So unless I'm missing something, the changes I installed cannot cause
> any new problems we didn't have since quite long ago.

Sorry, I misunderstood -- I thought this change was introducing a
difference in the saved files. My mistake for not following along
closely enough.

Maybe all this warrants some regression tests in ./test/lisp/mail?


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: master ef14acf: Make nnml handle invalid non-ASCII headers more consistently
  2022-12-19 18:05                   ` Eric Abrahamsen
@ 2022-12-19 18:16                     ` Eli Zaretskii
  0 siblings, 0 replies; 12+ messages in thread
From: Eli Zaretskii @ 2022-12-19 18:16 UTC (permalink / raw)
  To: Eric Abrahamsen; +Cc: fweimer, larsi, emacs-devel, ding

> From: Eric Abrahamsen <eric@ericabrahamsen.net>
> Cc: fweimer@redhat.com,  larsi@gnus.org,  emacs-devel@gnu.org,  ding@gnus.org
> Date: Mon, 19 Dec 2022 10:05:24 -0800
> 
> Sorry, I misunderstood -- I thought this change was introducing a
> difference in the saved files. My mistake for not following along
> closely enough.

No sweat.

> Maybe all this warrants some regression tests in ./test/lisp/mail?

Adding tests is always welcome, TIA.


^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2022-12-19 18:17 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <20210122180801.14756.84264@vcs0.savannah.gnu.org>
     [not found] ` <20210122180802.F0A1E20A10@vcs0.savannah.gnu.org>
2022-12-16 22:42   ` master ef14acf: Make nnml handle invalid non-ASCII headers more consistently Florian Weimer
2022-12-17  7:45     ` Eli Zaretskii
2022-12-17 14:57       ` Florian Weimer
2022-12-17 15:52         ` Eli Zaretskii
2022-12-19 13:59           ` Florian Weimer
2022-12-19 17:07             ` Eli Zaretskii
2022-12-19 17:27               ` Florian Weimer
2022-12-19 17:44                 ` Eli Zaretskii
2022-12-19 17:48               ` Eric Abrahamsen
2022-12-19 17:58                 ` Eli Zaretskii
2022-12-19 18:05                   ` Eric Abrahamsen
2022-12-19 18:16                     ` Eli Zaretskii

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).