Stuart Henderson wrote (2023-08-14 18:04 CEST): > On 2023/08/14 10:40, Antoine Jacoutot wrote: > > On Mon, Aug 14, 2023 at 08:44:25AM +0200, Stefan Hagen wrote: > > > Hi, > > > > > > there's a bug in gmime, which is affecting mail/mu. It doesn't look like > > > there will be a new gmime release anytime soon. Can we cherry-pick this > > > fix? > > > > > > Maintainer on CC. > > > > I am OK with this but could you use a regular patch instead of fetching from > > github? > > +1 million >
Sure, here's the same as a regular patch. Index: mail/gmime30/Makefile =================================================================== RCS file: /cvs/ports/mail/gmime30/Makefile,v retrieving revision 1.23 diff -u -p -u -p -r1.23 Makefile --- mail/gmime30/Makefile 5 Nov 2022 17:06:28 -0000 1.23 +++ mail/gmime30/Makefile 16 Aug 2023 05:53:40 -0000 @@ -4,7 +4,7 @@ GH_ACCOUNT= jstedfast GH_PROJECT= gmime GH_TAGNAME= 3.2.13 PKGNAME= gmime30-${GH_TAGNAME} -REVISION= 0 +REVISION= 1 SHARED_LIBS += gmime-3.0 2.2 # 213.0 Index: mail/gmime30/patches/patch-gmime_gmime-utils_c =================================================================== RCS file: mail/gmime30/patches/patch-gmime_gmime-utils_c diff -N mail/gmime30/patches/patch-gmime_gmime-utils_c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ mail/gmime30/patches/patch-gmime_gmime-utils_c 16 Aug 2023 05:53:40 -0000 @@ -0,0 +1,26 @@ +Fix rfc2047 token decoding logic for base64 encodings +Bug report: https://github.com/djcb/mu/issues/2429 + +Index: gmime/gmime-utils.c +--- gmime/gmime-utils.c.orig ++++ gmime/gmime-utils.c +@@ -1789,10 +1789,16 @@ rfc2047_token_decode (rfc2047_token *token, unsigned c + const unsigned char *inbuf = (const unsigned char *) token->text; + size_t len = token->length; + +- if (token->encoding == 'B') ++ if (token->encoding == 'B') { ++ /* Note: A state of -1 means that a previous rfc2047 encoded-word token ended with an '=' (aka 'eof'), ++ * so we need to reset the state. */ ++ if (*state == -1) ++ *state = 0; ++ + return g_mime_encoding_base64_decode_step (inbuf, len, outbuf, state, save); +- else +- return quoted_decode (inbuf, len, outbuf, state, save); ++ } ++ ++ return quoted_decode (inbuf, len, outbuf, state, save); + } + + static char * Index: mail/gmime30/patches/patch-tests_test-mime_c =================================================================== RCS file: /cvs/ports/mail/gmime30/patches/patch-tests_test-mime_c,v retrieving revision 1.3 diff -u -p -u -p -r1.3 patch-tests_test-mime_c --- mail/gmime30/patches/patch-tests_test-mime_c 16 Apr 2022 07:34:04 -0000 1.3 +++ mail/gmime30/patches/patch-tests_test-mime_c 16 Aug 2023 05:53:40 -0000 @@ -1,4 +1,4 @@ -64bit time_t +64bit time_t + Test for rfc2047 token decoding logic for base64 encodings Index: tests/test-mime.c --- tests/test-mime.c.orig @@ -12,3 +12,13 @@ Index: tests/test-mime.c if (tz_offset != dates[i].tzone) throw (exception_new ("timezones do not match")); +@@ -408,6 +408,9 @@ static struct { + "blah:\tI am broken", + "blah:\tI am broken" }, + #endif ++ { "=?UTF-8?B?SGVsbG8=?= =?UTF-8?B?IHdvcmxk?=", ++ "Hello world", ++ "Hello world" }, + { "=?iso-8859-1?Q?Copy_of_Rapport_fra_Norges_R=E5fisklag=2Edoc?=", + "Copy of Rapport fra Norges R\xc3\xa5" "fisklag.doc", + "Copy of Rapport fra Norges =?iso-8859-1?q?R=E5fisklag=2Edoc?=" },