Kaydet (Commit) c60d2f5e authored tarafından Joel Hillacre's avatar Joel Hillacre Kaydeden (comit) R. David Murray

bpo-30532: Fix whitespace folding in certain cases (#2591)

Leading whitespace was incorrectly dropped during folding of certain lines in the _header_value_parser's folding algorithm.  This makes the whitespace handling code consistent.
üst 5d2550cd
......@@ -341,9 +341,7 @@ class TokenList(list):
# avoid infinite recursion.
ws = part.pop_leading_fws()
if ws is not None:
# Peel off the leading whitespace and make it sticky, to
# avoid infinite recursion.
folded.stickyspace = str(part.pop(0))
folded.stickyspace = str(ws)
if folded.append_if_fits(part):
continue
if part.has_fws:
......
......@@ -2711,5 +2711,17 @@ class TestFolding(TestEmailBase):
self._test(parser.get_unstructured('xxx ' + 'y'*77),
'xxx \n ' + 'y'*77 + '\n')
def test_long_filename_attachment(self):
folded = self.policy.fold('Content-Disposition', 'attachment; filename="TEST_TEST_TEST_TEST_TEST_TEST_TEST_TEST_TEST_TEST_TEST_TEST_TES.txt"')
self.assertEqual(
'Content-Disposition: attachment;\n filename="TEST_TEST_TEST_TEST_TEST_TEST_TEST_TEST_TEST_TEST_TEST_TEST_TES.txt"\n',
folded
)
folded = self.policy.fold('Content-Disposition', 'attachment; filename="TEST_TEST_TEST_TEST_TEST_TEST_TEST_TEST_TEST_TEST_TEST_TEST_TEST_TEST_T.txt"')
self.assertEqual(
'Content-Disposition: attachment;\n filename="TEST_TEST_TEST_TEST_TEST_TEST_TEST_TEST_TEST_TEST_TEST_TEST_TEST_TEST_T.txt"\n',
folded
)
if __name__ == '__main__':
unittest.main()
......@@ -624,6 +624,7 @@ Wouter van Heyst
Kelsey Hightower
Jason Hildebrand
Aaron Hill
Joel Hillacre
Richie Hindle
Konrad Hinsen
David Hobley
......
Fix email header value parser dropping folding white space in certain cases.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment