From bdecb0a99963cfd7e0bb592e512242a4bf72dbb4 Mon Sep 17 00:00:00 2001 From: Valtteri Koskivuori Date: Tue, 25 Jul 2023 21:11:54 +0300 Subject: [PATCH] Mail: Don't crash on invalid/missing `From` Email header During testing, I found that some Email clients/providers format the From header field content with a lower case f, so `from:` instead of `From:`. Our client previously gave up if it couldn't find one that starts with a capital F. Now, we try both, and provide a fallback if neither were found. --- Userland/Applications/Mail/MailWidget.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/Userland/Applications/Mail/MailWidget.cpp b/Userland/Applications/Mail/MailWidget.cpp index b0fbfc1564..3ac88adc17 100644 --- a/Userland/Applications/Mail/MailWidget.cpp +++ b/Userland/Applications/Mail/MailWidget.cpp @@ -368,10 +368,17 @@ void MailWidget::selected_mailbox() auto& from_iterator_value = from_iterator->get<1>().value(); auto from_index = from_iterator_value.find("From:"sv); - VERIFY(from_index.has_value()); - auto potential_from = from_iterator_value.substring(from_index.value()); - auto from_parts = potential_from.split_limit(':', 2); - auto from = parse_and_unfold(from_parts.last()); + if (!from_index.has_value()) + from_index = from_iterator_value.find("from:"sv); + DeprecatedString from; + if (from_index.has_value()) { + auto potential_from = from_iterator_value.substring(from_index.value()); + auto from_parts = potential_from.split_limit(':', 2); + from = parse_and_unfold(from_parts.last()); + } + + if (from.is_empty()) + from = "(Unknown sender)"; InboxEntry inbox_entry { from, subject };