Hello community, here is the log from the commit of package kmime for openSUSE:Leap:15.2 checked in at 2020-05-24 18:07:38 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Leap:15.2/kmime (Old) and /work/SRC/openSUSE:Leap:15.2/.kmime.new.2738 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kmime" Sun May 24 18:07:38 2020 rev:59 rq:806528 version:20.04.1 Changes: -------- --- /work/SRC/openSUSE:Leap:15.2/kmime/kmime.changes 2020-05-12 11:34:55.644062869 +0200 +++ /work/SRC/openSUSE:Leap:15.2/.kmime.new.2738/kmime.changes 2020-05-24 18:07:42.109980961 +0200 @@ -1,0 +2,12 @@ +Fri May 15 15:41:41 UTC 2020 - Luca Beltrame <[email protected]> + +- Update to 20.04.1 + * New bugfix release + * For more details please see: + * https://kde.org/announcements/releases/2020-05-apps-update +- Changes since 20.04.0: + * Add test case about bug 421251 + * Fix Bug 362650 - an extra space character in attached file names the UTF-8 encoded (kde#362650) + * Disable code for the moment. It breaks some email address + +------------------------------------------------------------------- @@ -15,2 +26,0 @@ - * For more details please see: - * https://kde.org/announcements/releases/20.04-rc @@ -25,2 +34,0 @@ - * For more details please see: - * https://kde.org/announcements/releases/20.04-beta @@ -41 +49 @@ - * https://www.kde.org/announcements/releases/19.12.3 + * https://kde.org/announcements/releases/2020-03-apps-update @@ -55 +63 @@ - * https://www.kde.org/announcements/releases/19.12.2 + * https://kde.org/announcements/releases/2020-02-apps-update Old: ---- kmime-20.04.0.tar.xz kmime-20.04.0.tar.xz.sig New: ---- kmime-20.04.1.tar.xz kmime-20.04.1.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kmime.spec ++++++ --- /var/tmp/diff_new_pack.blF4m9/_old 2020-05-24 18:07:42.417981627 +0200 +++ /var/tmp/diff_new_pack.blF4m9/_new 2020-05-24 18:07:42.421981636 +0200 @@ -21,7 +21,7 @@ %{!?_kapp_version: %define _kapp_version %(echo %{version}| awk -F. '{print $1"."$2}')} %bcond_without lang Name: kmime -Version: 20.04.0 +Version: 20.04.1 Release: 0 Summary: KDE PIM libraries MIME support License: LGPL-2.1-or-later ++++++ kmime-20.04.0.tar.xz -> kmime-20.04.1.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kmime-20.04.0/CMakeLists.txt new/kmime-20.04.1/CMakeLists.txt --- old/kmime-20.04.0/CMakeLists.txt 2020-04-17 02:38:07.000000000 +0200 +++ new/kmime-20.04.1/CMakeLists.txt 2020-05-12 03:24:45.000000000 +0200 @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.5) -set(PIM_VERSION "5.14.0") +set(PIM_VERSION "5.14.1") project(KMime VERSION ${PIM_VERSION}) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kmime-20.04.0/autotests/headertest.cpp new/kmime-20.04.1/autotests/headertest.cpp --- old/kmime-20.04.0/autotests/headertest.cpp 2020-04-04 11:58:48.000000000 +0200 +++ new/kmime-20.04.1/autotests/headertest.cpp 2020-05-10 14:23:01.000000000 +0200 @@ -161,6 +161,7 @@ QCOMPARE(h->as7BitString(false), QByteArray("Ingo =?ISO-8859-1?Q?Kl=F6cker?= <[email protected]>")); delete h; + // a display name with non-latin1 content in both name components h = new Headers::Generics::AddressList(); const QString testAddress = QString::fromUtf8("Ingö Klöcker <[email protected]>"); @@ -297,6 +298,17 @@ QCOMPARE(names.takeFirst(), QLatin1String("Who?")); QCOMPARE(h->as7BitString(false), QByteArray("Mary Smith <[email protected]>, [email protected]., Who? <[email protected]>")); delete h; + + //Bug 421251 + // a display name with non-latin1 content + h = new Headers::Generics::AddressList(); + h->from7BitString("=?iso-8859-1?Q?=22I=F1igo_Salvador_Azurmendi=22?= <[email protected]>"); + QCOMPARE(h->addresses().count(), 1); + QCOMPARE(h->addresses().first(), QByteArray("[email protected]")); + QCOMPARE(h->displayNames().first(), QString::fromUtf8("I\u00F1igo Salvador Azurmendi")); + QCOMPARE(h->asUnicodeString(), QString::fromUtf8("I\u00F1igo Salvador Azurmendi <[email protected]>")); + QCOMPARE(h->as7BitString(false), QByteArray("=?ISO-8859-1?Q?I=F1igo?= Salvador Azurmendi <[email protected]>")); + delete h; } void HeaderTest::testMailboxListHeader() @@ -544,12 +556,51 @@ delete h; // TODO: test for case-insensitive disposition value + + // Bug 362650 + h = new ContentDisposition; + h->from7BitString("attachment;\n" + "filename*0*=UTF-8''%D0%AD%D1%82%D0%BE%D0%92%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD;" + "filename*1*=%D0%B8%D0%B5%D0%A1%D0%94%D0%BB%D0%B8%D0%BD%D0%BD%D1%8B%D0%BC;" + "filename*2*=%D0%98%D0%BC%D0%B5%D0%BC%D0%A4%D0%B0%D0%B9%D0%BB%D0%B0%D0%A1;" + "filename*3*=%D0%BE%D0%B2%D1%81%D0%B5%D0%BC%D0%91%D0%B5%D0%B7%D0%9F%D1%80;" + "filename*4*=%D0%BE%D0%B1%D0%B5%D0%BB%D0%BE%D0%B2%D0%98%D0%95%D1%89%D1%91;" + "filename*5*=%D0%A0%D0%B0%D0%B7%D0%AD%D1%82%D0%BE%D0%92%D0%BB%D0%BE%D0%B6;" + "filename*6*=%D0%B5%D0%BD%D0%B8%D0%B5%D0%A1%D0%94%D0%BB%D0%B8%D0%BD%D0%BD;" + "filename*7*=%D1%8B%D0%BC%D0%98%D0%BC%D0%B5%D0%BC%D0%A4%D0%B0%D0%B9%D0%BB;" + "filename*8*=%D0%B0%D0%A1%D0%BE%D0%B2%D1%81%D0%B5%D0%BC%D0%91%D0%B5%D0%B7;" + "filename*9*=%D0%9F%D1%80%D0%BE%D0%B1%D0%B5%D0%BB%D0%BE%D0%B2%2E%74%78%74"); + QCOMPARE(h->disposition(), CDattachment); + QCOMPARE(h->filename(), QString::fromUtf8("ЭтоВложениеСДлиннымИмемФайлаСовсемБезПробеловИЕщёРазЭтоВложениеСДлиннымИмемФайлаСовсемБезПробелов.txt")); + + h = new ContentDisposition; + h->from7BitString("attachment; filename*=UTF-8''%D0%AD%D1%82%D0%BE%D0%92%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5%D0%A1%D0%94%D0%BB%D0%B8%D0%BD%D0%BD%D1%8B%D0%BC%D0%98%D0%BC%D0%B5%D0%BC%D0%A4%D0%B0%D0%B9%D0%BB%D0%B0%D0%A1%D0%BE%D0%B2%D1%81%D0%B5%D0%BC%D0%91%D0%B5%D0%B7%D0%9F%D1%80%D0%BE%D0%B1%D0%B5%D0%BB%D0%BE%D0%B2%D0%98%D0%95%D1%89%D1%91%D0%A0%D0%B0%D0%B7%D0%AD%D1%82%D0%BE%D0%92%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5%D0%A1%D0%94%D0%BB%D0%B8%D0%BD%D0%BD%D1%8B%D0%BC%D0%98%D0%BC%D0%B5%D0%BC%D0%A4%D0%B0%D0%B9%D0%BB%D0%B0%D0%A1%D0%BE%D0%B2%D1%81%D0%B5%D0%BC%D0%91%D0%B5%D0%B7%D0%9F%D1%80%D0%BE%D0%B1%D0%B5%D0%BB%D0%BE%D0%B2%2Etxt"); + QCOMPARE(h->disposition(), CDattachment); + QCOMPARE(h->filename(), QString::fromUtf8("ЭтоВложениеСДлиннымИмемФайлаСовсемБезПробеловИЕщёРазЭтоВложениеСДлиннымИмемФайлаСовсемБезПробелов.txt")); } void HeaderTest::testContentTypeHeader() { ContentType *h; + //Bug 362650 (test is without space => ok) + h = new ContentType; + h->from7BitString("text/plain;\n name=\"=?UTF-8?B?0K3RgtC+0JLQu9C+0LbQtdC90LjQtdCh0JTQu9C40L3QvdGL0LzQmNC8?=" + "=?UTF-8?B?0LXQvNCk0LDQudC70LDQodC+0LLRgdC10LzQkdC10LfQn9GA0L7QsdC1?=" + "=?UTF-8?B?0LvQvtCy0JjQldGJ0ZHQoNCw0LfQrdGC0L7QktC70L7QttC10L3QuNC1?=" + "=?UTF-8?B?0KHQlNC70LjQvdC90YvQvNCY0LzQtdC80KTQsNC50LvQsNCh0L7QstGB?=" + "=?UTF-8?B?0LXQvNCR0LXQt9Cf0YDQvtCx0LXQu9C+0LIudHh0?=\""); + QCOMPARE(h->name(), QString::fromUtf8("ЭтоВложениеСДлиннымИмемФайлаСовсемБезПробеловИЕщёРазЭтоВложениеСДлиннымИмемФайлаСовсемБезПробелов.txt")); + delete h; + h = new ContentType; + h->from7BitString("text/plain;\n name=\"=?UTF-8?B?0K3RgtC+0JLQu9C+0LbQtdC90LjQtdCh0JTQu9C40L3QvdGL0LzQmNC8?=" + " =?UTF-8?B?0LXQvNCk0LDQudC70LDQodC+0LLRgdC10LzQkdC10LfQn9GA0L7QsdC1?=" + " =?UTF-8?B?0LvQvtCy0JjQldGJ0ZHQoNCw0LfQrdGC0L7QktC70L7QttC10L3QuNC1?=" + " =?UTF-8?B?0KHQlNC70LjQvdC90YvQvNCY0LzQtdC80KTQsNC50LvQsNCh0L7QstGB?=" + " =?UTF-8?B?0LXQvNCR0LXQt9Cf0YDQvtCx0LXQu9C+0LIudHh0?=\""); + QCOMPARE(h->name(), QString::fromUtf8("ЭтоВложениеСДлиннымИмемФайлаСовсемБезПробеловИЕщёРазЭтоВложениеСДлиннымИмемФайлаСовсемБезПробелов.txt")); + delete h; + // empty header h = new ContentType(); QVERIFY(h->isEmpty()); @@ -624,6 +675,7 @@ QCOMPARE(h->mediaType(), QByteArray("MULTIPART")); QCOMPARE(h->subType(), QByteArray("MIXED")); delete h; + } void HeaderTest::testTokenHeader() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kmime-20.04.0/po/zh_CN/libkmime5.po new/kmime-20.04.1/po/zh_CN/libkmime5.po --- old/kmime-20.04.0/po/zh_CN/libkmime5.po 2020-04-17 02:38:07.000000000 +0200 +++ new/kmime-20.04.1/po/zh_CN/libkmime5.po 2020-05-12 03:24:45.000000000 +0200 @@ -7,7 +7,7 @@ "Project-Id-Version: kdeorg\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2019-12-31 03:21+0100\n" -"PO-Revision-Date: 2020-03-25 19:56\n" +"PO-Revision-Date: 2020-05-09 13:51\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: Chinese Simplified\n" "Language: zh_CN\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kmime-20.04.0/src/kmime_header_parsing.cpp new/kmime-20.04.1/src/kmime_header_parsing.cpp --- old/kmime-20.04.0/src/kmime_header_parsing.cpp 2020-04-04 11:58:48.000000000 +0200 +++ new/kmime-20.04.1/src/kmime_header_parsing.cpp 2020-05-10 14:23:01.000000000 +0200 @@ -354,7 +354,6 @@ // We will apply unfolding and quoted-pair removal. // We return when we either encounter the end or unescaped openChar // or closeChar. - assert(*(scursor - 1) == openChar || *(scursor - 1) == closeChar); while (scursor != send) { @@ -445,6 +444,31 @@ --scursor; if (parseEncodedWord(scursor, send, tmp, lang, charset)) { result += tmp; + //qDebug() << " tmp " << tmp; + if (scursor == send) { + break; + } else if (*scursor++ == ' ') { //Workaround Bug 362650 thunderbird add space for each new line + if (scursor == send) { + --scursor; + break; + } else if (*scursor++ == '=') { + if (scursor == send) { + --scursor; + --scursor; + break; + } else if (*scursor++ == '?') { + --scursor; + --scursor; + break; + } + } else { + --scursor; + --scursor; + } + } else { + --scursor; + } + break; } else { scursor = oldscursor; @@ -1305,7 +1329,6 @@ // (private) method is that we can deal with broken parameters // _here_ and leave the rfc2231 handling solely to // parseParameterList(), which will still be enough work. - while (scursor != send) { eatCFWS(scursor, send, isCRLF); // empty entry ending the list: OK. @@ -1317,7 +1340,6 @@ scursor++; continue; } - QPair<QString, QStringOrQPair> maybeParameter; if (!parseParameter(scursor, send, maybeParameter, isCRLF)) { // we need to do a bit of work if the attribute is not @@ -1586,7 +1608,6 @@ } } } - // write last attr/value pair: if (!attribute.isNull()) { result.insert(attribute, value); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kmime-20.04.0/src/kmime_headers.cpp new/kmime-20.04.1/src/kmime_headers.cpp --- old/kmime-20.04.0/src/kmime_headers.cpp 2020-04-04 11:58:48.000000000 +0200 +++ new/kmime-20.04.1/src/kmime_headers.cpp 2020-05-10 14:23:01.000000000 +0200 @@ -255,7 +255,7 @@ void Structured::from7BitString(const QByteArray &s) { -#if 1 +#if 0 Q_D(Structured); //Bug about mailto with space which are replaced by "_" so it failed to parse //=> we reconvert to correct encoding as RFC2047 @@ -1872,7 +1872,6 @@ if (!parseToken(scursor, send, maybeMimeType, ParseTokenNoFlag)) { return false; } - // subtype eatCFWS(scursor, send, isCRLF); if (scursor == send || *scursor != '/') { @@ -1883,7 +1882,6 @@ if (scursor == send) { return false; } - QPair<const char *, int> maybeSubType; if (!parseToken(scursor, send, maybeSubType, ParseTokenNoFlag)) { return false; @@ -1898,7 +1896,6 @@ if (scursor == send) { goto success; // no parameters } - if (*scursor != ';') { return false; }
