changeset: 93429:7b82b58b8329 branch: 2.7 parent: 93424:e80cb046e764 user: Serhiy Storchaka date: Fri Nov 07 14:07:43 2014 +0200 files: Lib/test/test_codecs.py Lib/test/test_uu.py description: Backported tests for issue #22406. diff -r e80cb046e764 -r 7b82b58b8329 Lib/test/test_codecs.py --- a/Lib/test/test_codecs.py Fri Nov 07 12:19:23 2014 +0200 +++ b/Lib/test/test_codecs.py Fri Nov 07 14:07:43 2014 +0200 @@ -2109,6 +2109,10 @@ BomTest, ) + def test_uu_invalid(self): + # Missing "begin" line + self.assertRaises(ValueError, codecs.decode, "", "uu-codec") + if __name__ == "__main__": test_main() diff -r e80cb046e764 -r 7b82b58b8329 Lib/test/test_uu.py --- a/Lib/test/test_uu.py Fri Nov 07 12:19:23 2014 +0200 +++ b/Lib/test/test_uu.py Fri Nov 07 14:07:43 2014 +0200 @@ -61,6 +61,26 @@ 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):