From b4f3d80d4fba239f8376c969aa6b0c244177062a Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Fri, 7 Nov 2014 14:07:43 +0200 Subject: Backported tests for issue #22406. --- Lib/test/test_codecs.py | 4 ++++ Lib/test/test_uu.py | 20 ++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/Lib/test/test_codecs.py b/Lib/test/test_codecs.py index f2ec670..9f3b17a 100644 --- a/Lib/test/test_codecs.py +++ b/Lib/test/test_codecs.py @@ -2109,6 +2109,10 @@ def test_main(): BomTest, ) + def test_uu_invalid(self): + # Missing "begin" line + self.assertRaises(ValueError, codecs.decode, "", "uu-codec") + if __name__ == "__main__": test_main() diff --git a/Lib/test/test_uu.py b/Lib/test/test_uu.py index 31046b0..51a4fbe 100644 --- a/Lib/test/test_uu.py +++ b/Lib/test/test_uu.py @@ -61,6 +61,26 @@ class UUTest(unittest.TestCase): except uu.Error, e: self.assertEqual(str(e), "No valid begin line found in input file") + def test_garbage_padding(self): + # Issue #22406 + encodedtext = ( + "begin 644 file\n" + # length 1; bits 001100 111111 111111 111111 + "\x21\x2C\x5F\x5F\x5F\n" + "\x20\n" + "end\n" + ) + plaintext = "\x33" # 00110011 + + inp = cStringIO.StringIO(encodedtext) + out = cStringIO.StringIO() + uu.decode(inp, out, quiet=True) + self.assertEqual(out.getvalue(), plaintext) + + import codecs + decoded = codecs.decode(encodedtext, "uu_codec") + self.assertEqual(decoded, plaintext) + class UUStdIOTest(unittest.TestCase): def setUp(self): -- cgit v0.12