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:
@@ -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).",
|
||||
],
|
||||
|
||||
Reference in New Issue
Block a user