diff --git a/autotests/data/mails/reply-header.mbox b/autotests/data/mails/reply-header.mbox new file mode 100644 --- /dev/null +++ b/autotests/data/mails/reply-header.mbox @@ -0,0 +1,6 @@ +From null@kde.org Fri May 08 12:59:02 2020 +Reply: Weird Receiver +To: Volker Krause +From: Null + +Hi Volker, diff --git a/autotests/messagetest.h b/autotests/messagetest.h --- a/autotests/messagetest.h +++ b/autotests/messagetest.h @@ -47,6 +47,7 @@ void testEncryptedMails(); void testReturnSameMail(); void testEmptySubject(); + void testReplyHeader(); private: KMime::Message::Ptr readAndParseMail(const QString &mailFile) const; diff --git a/autotests/messagetest.cpp b/autotests/messagetest.cpp --- a/autotests/messagetest.cpp +++ b/autotests/messagetest.cpp @@ -630,6 +630,16 @@ QVERIFY(msg->subject()->asUnicodeString().isEmpty()); } +void MessageTest::testReplyHeader() +{ + auto msg = readAndParseMail(QStringLiteral("reply-header.mbox")); + QVERIFY(msg); + QVERIFY(!msg->replyTo(false)); + QCOMPARE(msg->hasHeader("Reply-To"), false); + QCOMPARE(msg->hasHeader("Reply"), true); + QVERIFY(msg->headerByType("Reply")); +} + KMime::Message::Ptr MessageTest::readAndParseMail(const QString &mailFile) const { QFile file(QLatin1String(TEST_DATA_DIR) + QLatin1String("/mails/") + mailFile); diff --git a/src/kmime_headerfactory.cpp b/src/kmime_headerfactory.cpp --- a/src/kmime_headerfactory.cpp +++ b/src/kmime_headerfactory.cpp @@ -38,8 +38,8 @@ using namespace KMime::Headers; #define mk_header(hdr) \ - if (qstrnicmp(type, hdr ::staticType(), typeLen) == 0) \ - return new hdr + if (qstrnicmp(type, hdr ::staticType(), std::max(typeLen, strlen(hdr::staticType()))) == 0) \ + return new hdr; Headers::Base *HeaderFactory::createHeader(const char *type, size_t typeLen) {