mirror of
https://github.com/pocoproject/poco.git
synced 2026-01-11 16:43:33 +01:00
fix(Net::MessageHeader): Correct RFC 2047 decoding for two consecutive encoded words (#4542)
* fix bug #4535 RFC 2047 decodeWord * modify logic uses separate string which contains simbols between chunks and if this string contains only space ot \n or \t or \v than trim it
This commit is contained in:
@@ -400,11 +400,19 @@ void MessageHeaderTest::testDecodeWord()
|
||||
|
||||
coded = "(=?ISO-8859-1?Q?a?= =?ISO-8859-1?Q?b?=)";
|
||||
decoded = MessageHeader::decodeWord(coded, "ISO-8859-1");
|
||||
assertTrue (decoded == "(a b)");
|
||||
assertTrue (decoded == "(ab)");
|
||||
|
||||
coded = "(=?ISO-8859-1?Q?a?= <0> =?ISO-8859-1?Q?b?=)";
|
||||
decoded = MessageHeader::decodeWord(coded, "ISO-8859-1");
|
||||
assertTrue (decoded == "(a <0> b)");
|
||||
|
||||
coded = "Hello =?UTF-8?B?RnJhbmNpcw==?=, good bye";
|
||||
decoded = MessageHeader::decodeWord(coded, "ISO-8859-1");
|
||||
assertTrue (decoded == "Hello Francis, good bye");
|
||||
|
||||
coded = "application/pdf; name=\"=?utf-8?Q?RUG_Regler-_und_Ger=C3=A4tebau_Gm?= =?utf-8?Q?bH_Angebot_Erneuerung_=C3=9CE.pdf?=\"";
|
||||
decoded = MessageHeader::decodeWord(coded, "UTF-8");
|
||||
assertTrue (decoded == "application/pdf; name=\"RUG Regler- und Gerätebau GmbH Angebot Erneuerung ÜE.pdf\"");
|
||||
}
|
||||
|
||||
// Sample HTTP reuest header
|
||||
@@ -430,10 +438,10 @@ void MessageHeaderTest::testAutoDecode()
|
||||
MessageHeader mh;
|
||||
mh.read(istr);
|
||||
|
||||
assertEquals(mh.get("X-Encoded-Header-A"), "(a b)");
|
||||
assertEquals(mh.get("X-Encoded-Header-A"), "(ab)");
|
||||
assertEquals(mh.get("X-Encoded-Header-B"), "Hello Francis, good bye");
|
||||
|
||||
assertEquals(mh.getDecoded("X-Encoded-Header-A"), "(a b)");
|
||||
assertEquals(mh.getDecoded("X-Encoded-Header-A"), "(ab)");
|
||||
assertEquals(mh.getDecoded("X-Encoded-Header-B"), "Hello Francis, good bye");
|
||||
}
|
||||
{
|
||||
@@ -445,7 +453,7 @@ void MessageHeaderTest::testAutoDecode()
|
||||
assertEquals(mh.get("X-Encoded-Header-A"), "(=?ISO-8859-1?Q?a?= =?ISO-8859-1?Q?b?=)");
|
||||
assertEquals(mh.get("X-Encoded-Header-B"), "Hello =?UTF-8?B?RnJhbmNpcw==?=, good bye");
|
||||
|
||||
assertEquals(mh.getDecoded("X-Encoded-Header-A"), "(a b)");
|
||||
assertEquals(mh.getDecoded("X-Encoded-Header-A"), "(ab)");
|
||||
assertEquals(mh.getDecoded("X-Encoded-Header-B"), "Hello Francis, good bye");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user