mirror of https://github.com/djcb/mu.git
message: remove control characters from subject
And add a unit-test. Fixes #2477
This commit is contained in:
parent
b0c71fbdb5
commit
085ad4a9fd
|
@ -700,7 +700,7 @@ fill_document(Message::Private& priv)
|
||||||
case Field::Id::Size: /* already */
|
case Field::Id::Size: /* already */
|
||||||
break;
|
break;
|
||||||
case Field::Id::Subject:
|
case Field::Id::Subject:
|
||||||
doc.add(field.id, mime_msg.subject());
|
doc.add(field.id, mime_msg.subject().map(remove_ctrl));
|
||||||
break;
|
break;
|
||||||
case Field::Id::Tags:
|
case Field::Id::Tags:
|
||||||
if (auto&& tags{extract_tags(mime_msg)}; !tags.empty())
|
if (auto&& tags{extract_tags(mime_msg)}; !tags.empty())
|
||||||
|
|
|
@ -1046,6 +1046,28 @@ test_message_sanitize_maildir()
|
||||||
assert_equal(Message::sanitize_maildir("/foo/bar/cuux/"), "/foo/bar/cuux");
|
assert_equal(Message::sanitize_maildir("/foo/bar/cuux/"), "/foo/bar/cuux");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
test_message_subject_with_newline()
|
||||||
|
{
|
||||||
|
constexpr const auto txt =
|
||||||
|
R"(To: foo@example.com
|
||||||
|
Subject: =?utf-8?q?Le_poids_=C3=A9conomique_de_la_chasse_:_=0A=0Ala_dette_cach?= =?utf-8?q?=C3=A9e_de_la_chasse_!?=
|
||||||
|
Date: Mon, 24 Apr 2023 07:32:43 +0000
|
||||||
|
|
||||||
|
Hello!
|
||||||
|
)";
|
||||||
|
g_test_bug("2477");
|
||||||
|
|
||||||
|
const auto msg{Message::make_from_text(txt, "/foo/cur/m123:2,S")};
|
||||||
|
assert_valid_result(msg);
|
||||||
|
|
||||||
|
assert_equal(msg->subject(), // newlines are filtered-out
|
||||||
|
"Le poids économique de la chasse : la dette cachée de la chasse !");
|
||||||
|
assert_equal(msg->header("Subject").value_or(""),
|
||||||
|
"Le poids économique de la chasse : \n\nla dette cachée de la chasse !");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
main(int argc, char* argv[])
|
main(int argc, char* argv[])
|
||||||
{
|
{
|
||||||
|
@ -1071,6 +1093,8 @@ main(int argc, char* argv[])
|
||||||
test_message_outlook_body);
|
test_message_outlook_body);
|
||||||
g_test_add_func("/message/message/message-id",
|
g_test_add_func("/message/message/message-id",
|
||||||
test_message_message_id);
|
test_message_message_id);
|
||||||
|
g_test_add_func("/message/message/subject-with-newline",
|
||||||
|
test_message_subject_with_newline);
|
||||||
g_test_add_func("/message/message/fail",
|
g_test_add_func("/message/message/fail",
|
||||||
test_message_fail);
|
test_message_fail);
|
||||||
g_test_add_func("/message/message/sanitize-maildir",
|
g_test_add_func("/message/message/sanitize-maildir",
|
||||||
|
|
Loading…
Reference in New Issue