]> granicus.if.org Git - python/commitdiff
Backported tests for issue #22406.
authorSerhiy Storchaka <storchaka@gmail.com>
Fri, 7 Nov 2014 12:07:43 +0000 (14:07 +0200)
committerSerhiy Storchaka <storchaka@gmail.com>
Fri, 7 Nov 2014 12:07:43 +0000 (14:07 +0200)
Lib/test/test_codecs.py
Lib/test/test_uu.py

index f2ec67012cc5355cf0c12f7d69e25b3560e1b246..9f3b17a7c57eb4bca91a16fd0a3a4306c6d8e1ab 100644 (file)
@@ -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()
index 31046b07d5f87e80aafdcffaf0aca7162bb90b29..51a4fbeaf970838234e6d13af66d41461a1dce19 100644 (file)
@@ -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):