From: Serhiy Storchaka Date: Fri, 7 Nov 2014 12:07:43 +0000 (+0200) Subject: Backported tests for issue #22406. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b4f3d80d4fba239f8376c969aa6b0c244177062a;p=python Backported tests for issue #22406. --- diff --git a/Lib/test/test_codecs.py b/Lib/test/test_codecs.py index f2ec67012c..9f3b17a7c5 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 31046b07d5..51a4fbeaf9 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):