Backported tests for issue #22406.
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 @@
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 @@
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):