1
0
mirror of https://github.com/home-assistant/core.git synced 2025-12-24 12:59:34 +00:00

Fix imap parsing non rfc compliant date crash (#93630)

* Fix imap parsing non rfc compliant date crash

* Use parsedate_to_datetime from mail.utils
This commit is contained in:
Jan Bouwhuis
2023-05-28 13:28:11 +02:00
committed by GitHub
parent 202c9071a4
commit 4c0d169cfc
3 changed files with 64 additions and 20 deletions

View File

@@ -3,7 +3,10 @@
DATE_HEADER1 = b"Date: Fri, 24 Mar 2023 13:52:00 +0100\r\n"
DATE_HEADER2 = b"Date: Fri, 24 Mar 2023 13:52:00 +0100 (CET)\r\n"
DATE_HEADER_INVALID = b"2023-03-27T13:52:00 +0100\r\n"
DATE_HEADER3 = b"Date: 24 Mar 2023 13:52:00 +0100\r\n"
DATE_HEADER_INVALID1 = b"2023-03-27T13:52:00 +0100\r\n"
DATE_HEADER_INVALID2 = b"Date: 2023-03-27T13:52:00 +0100\r\n"
DATE_HEADER_INVALID3 = b"Date: Fri, 2023-03-27T13:52:00 +0100\r\n"
TEST_MESSAGE_HEADERS1 = (
b"Return-Path: <john.doe@example.com>\r\nDelivered-To: notify@example.com\r\n"
@@ -23,7 +26,15 @@ TEST_MESSAGE_HEADERS2 = (
TEST_MESSAGE = TEST_MESSAGE_HEADERS1 + DATE_HEADER1 + TEST_MESSAGE_HEADERS2
TEST_MESSAGE_ALT = TEST_MESSAGE_HEADERS1 + DATE_HEADER2 + TEST_MESSAGE_HEADERS2
TEST_INVALID_DATE = TEST_MESSAGE_HEADERS1 + DATE_HEADER_INVALID + TEST_MESSAGE_HEADERS2
TEST_INVALID_DATE1 = (
TEST_MESSAGE_HEADERS1 + DATE_HEADER_INVALID1 + TEST_MESSAGE_HEADERS2
)
TEST_INVALID_DATE2 = (
TEST_MESSAGE_HEADERS1 + DATE_HEADER_INVALID2 + TEST_MESSAGE_HEADERS2
)
TEST_INVALID_DATE3 = (
TEST_MESSAGE_HEADERS1 + DATE_HEADER_INVALID3 + TEST_MESSAGE_HEADERS2
)
TEST_CONTENT_TEXT_BARE = b"\r\n" b"Test body\r\n" b"\r\n"
@@ -110,13 +121,35 @@ TEST_FETCH_RESPONSE_TEXT_PLAIN_ALT = (
],
)
TEST_FETCH_RESPONSE_INVALID_DATE = (
TEST_FETCH_RESPONSE_INVALID_DATE1 = (
"OK",
[
b"1 FETCH (BODY[] {"
+ str(len(TEST_INVALID_DATE + TEST_CONTENT_TEXT_PLAIN)).encode("utf-8")
+ str(len(TEST_INVALID_DATE1 + TEST_CONTENT_TEXT_PLAIN)).encode("utf-8")
+ b"}",
bytearray(TEST_INVALID_DATE + TEST_CONTENT_TEXT_PLAIN),
bytearray(TEST_INVALID_DATE1 + TEST_CONTENT_TEXT_PLAIN),
b")",
b"Fetch completed (0.0001 + 0.000 secs).",
],
)
TEST_FETCH_RESPONSE_INVALID_DATE2 = (
"OK",
[
b"1 FETCH (BODY[] {"
+ str(len(TEST_INVALID_DATE2 + TEST_CONTENT_TEXT_PLAIN)).encode("utf-8")
+ b"}",
bytearray(TEST_INVALID_DATE2 + TEST_CONTENT_TEXT_PLAIN),
b")",
b"Fetch completed (0.0001 + 0.000 secs).",
],
)
TEST_FETCH_RESPONSE_INVALID_DATE3 = (
"OK",
[
b"1 FETCH (BODY[] {"
+ str(len(TEST_INVALID_DATE3 + TEST_CONTENT_TEXT_PLAIN)).encode("utf-8")
+ b"}",
bytearray(TEST_INVALID_DATE3 + TEST_CONTENT_TEXT_PLAIN),
b")",
b"Fetch completed (0.0001 + 0.000 secs).",
],