diff options
author | Łukasz Langa <lukasz@langa.pl> | 2021-10-13 17:12:22 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-13 17:12:22 (GMT) |
commit | f8473f6f7603f8cccccc3307d4cb853587be41b3 (patch) | |
tree | 1155b0afe30283840770d0e73e13b20407eb4c77 | |
parent | 151234f5da4b1922e3d91233a6eddda92d7269b0 (diff) | |
download | cpython-f8473f6f7603f8cccccc3307d4cb853587be41b3.zip cpython-f8473f6f7603f8cccccc3307d4cb853587be41b3.tar.gz cpython-f8473f6f7603f8cccccc3307d4cb853587be41b3.tar.bz2 |
[3.10] bpo-45239: Fix parsedate_tz when time has more than 2 dots in it (GH-28452) (GH-28930)
Co-authored-by: Łukasz Langa <lukasz@langa.pl>
(cherry picked from commit b9e687618d3489944f29adbd2be50b46940c9e70)
Co-authored-by: Ben Hoyt <benhoyt@gmail.com>
-rw-r--r-- | Lib/email/_parseaddr.py | 2 | ||||
-rw-r--r-- | Lib/test/test_email/test_email.py | 1 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Library/2021-10-13-17-52-48.bpo-45239.7li1_0.rst | 3 |
3 files changed, 6 insertions, 0 deletions
diff --git a/Lib/email/_parseaddr.py b/Lib/email/_parseaddr.py index 977fedf..ba5ad5a 100644 --- a/Lib/email/_parseaddr.py +++ b/Lib/email/_parseaddr.py @@ -128,6 +128,8 @@ def _parsedate_tz(data): tss = 0 elif len(tm) == 3: [thh, tmm, tss] = tm + else: + return None else: return None try: diff --git a/Lib/test/test_email/test_email.py b/Lib/test/test_email/test_email.py index 4001f71..54ffcdc 100644 --- a/Lib/test/test_email/test_email.py +++ b/Lib/test/test_email/test_email.py @@ -3009,6 +3009,7 @@ class TestMiscellaneous(TestEmailBase): self.assertIsNone(utils.parsedate_tz('0')) self.assertIsNone(utils.parsedate('A Complete Waste of Time')) self.assertIsNone(utils.parsedate_tz('A Complete Waste of Time')) + self.assertIsNone(utils.parsedate_tz('Wed, 3 Apr 2002 12.34.56.78+0800')) # Not a part of the spec but, but this has historically worked: self.assertIsNone(utils.parsedate(None)) self.assertIsNone(utils.parsedate_tz(None)) diff --git a/Misc/NEWS.d/next/Library/2021-10-13-17-52-48.bpo-45239.7li1_0.rst b/Misc/NEWS.d/next/Library/2021-10-13-17-52-48.bpo-45239.7li1_0.rst new file mode 100644 index 0000000..9e5ec56 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-10-13-17-52-48.bpo-45239.7li1_0.rst @@ -0,0 +1,3 @@ +Fixed :func:`email.utils.parsedate_tz` crashing with +:exc:`UnboundLocalError` on certain invalid input instead of returning +``None``. Patch by Ben Hoyt. |