mirror of
https://github.com/python/cpython.git
synced 2025-08-31 05:58:33 +00:00
[3.14] gh-134152: Fix UnboundLocalError in email._header_value_parser _get_ptext_to_endchars (GH-134233) (#134678)
Co-authored-by: R. David Murray <rdmurray@bitdance.com>
This commit is contained in:
parent
ebfd18b3f0
commit
1ce68f6297
3 changed files with 37 additions and 0 deletions
|
@ -1020,6 +1020,8 @@ def _get_ptext_to_endchars(value, endchars):
|
|||
a flag that is True iff there were any quoted printables decoded.
|
||||
|
||||
"""
|
||||
if not value:
|
||||
return '', '', False
|
||||
fragment, *remainder = _wsp_splitter(value, 1)
|
||||
vchars = []
|
||||
escape = False
|
||||
|
|
|
@ -463,6 +463,19 @@ class TestParser(TestParserMixin, TestEmailBase):
|
|||
[errors.NonPrintableDefect], ')')
|
||||
self.assertEqual(ptext.defects[0].non_printables[0], '\x00')
|
||||
|
||||
def test_get_qp_ctext_close_paren_only(self):
|
||||
self._test_get_x(parser.get_qp_ctext,
|
||||
')', '', ' ', [], ')')
|
||||
|
||||
def test_get_qp_ctext_open_paren_only(self):
|
||||
self._test_get_x(parser.get_qp_ctext,
|
||||
'(', '', ' ', [], '(')
|
||||
|
||||
def test_get_qp_ctext_no_end_char(self):
|
||||
self._test_get_x(parser.get_qp_ctext,
|
||||
'', '', ' ', [], '')
|
||||
|
||||
|
||||
# get_qcontent
|
||||
|
||||
def test_get_qcontent_only(self):
|
||||
|
@ -503,6 +516,14 @@ class TestParser(TestParserMixin, TestEmailBase):
|
|||
[errors.NonPrintableDefect], '"')
|
||||
self.assertEqual(ptext.defects[0].non_printables[0], '\x00')
|
||||
|
||||
def test_get_qcontent_empty(self):
|
||||
self._test_get_x(parser.get_qcontent,
|
||||
'"', '', '', [], '"')
|
||||
|
||||
def test_get_qcontent_no_end_char(self):
|
||||
self._test_get_x(parser.get_qcontent,
|
||||
'', '', '', [], '')
|
||||
|
||||
# get_atext
|
||||
|
||||
def test_get_atext_only(self):
|
||||
|
@ -1283,6 +1304,18 @@ class TestParser(TestParserMixin, TestEmailBase):
|
|||
self._test_get_x(parser.get_dtext,
|
||||
'foo[bar', 'foo', 'foo', [], '[bar')
|
||||
|
||||
def test_get_dtext_open_bracket_only(self):
|
||||
self._test_get_x(parser.get_dtext,
|
||||
'[', '', '', [], '[')
|
||||
|
||||
def test_get_dtext_close_bracket_only(self):
|
||||
self._test_get_x(parser.get_dtext,
|
||||
']', '', '', [], ']')
|
||||
|
||||
def test_get_dtext_empty(self):
|
||||
self._test_get_x(parser.get_dtext,
|
||||
'', '', '', [], '')
|
||||
|
||||
# get_domain_literal
|
||||
|
||||
def test_get_domain_literal_only(self):
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
Fixed :exc:`UnboundLocalError` that could occur during :mod:`email` header
|
||||
parsing if an expected trailing delimiter is missing in some contexts.
|
Loading…
Add table
Add a link
Reference in a new issue