From 7a5b65add59162c37f79752b39bf100676132586 Mon Sep 17 00:00:00 2001 From: Sofian Brabez Date: Sat, 21 Nov 2020 10:13:29 +0100 Subject: [PATCH] bpo-42422: Add new crasher to cover multiple versions of python interpreter --- Lib/test/crashers/null_code_obj.py | 36 ++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 Lib/test/crashers/null_code_obj.py diff --git a/Lib/test/crashers/null_code_obj.py b/Lib/test/crashers/null_code_obj.py new file mode 100644 index 0000000000..1b3e854853 --- /dev/null +++ b/Lib/test/crashers/null_code_obj.py @@ -0,0 +1,36 @@ +import platform + +""" +This execute a payload code object which crashes the interpeter for different +python versions. Currently there is no bytecode verifier to prevent those +crashes related to malformed bytecode +""" + + +def crash_27(): + exec((lambda f:f).func_code.__class__(0,0,0,0,"\x01",(),(),(),"","",0,"")) + + +def crash_36(): + exec((lambda f:f).__code__.__class__(0,0,0,0,0,b"\x01",(),(),(),"","",0,b"")) + + +def crash_38(): + exec((lambda f: f).__code__.__class__(0,0,0,0,0,0,b"\x01",(),(),(),"","",0,b"")) + + +def crash(): + locals()['crash_27'] = crash_27 + locals()['crash_36'] = crash_36 + locals()['crash_37'] = crash_36 + locals()['crash_38'] = crash_38 + locals()['crash_39'] = crash_38 + locals()['crash_310'] = crash_38 + + py_ver = "".join(platform.python_version_tuple()[0:2]) + crash_func = "crash_{}".format(py_ver) + locals()[crash_func]() + + +if __name__ == '__main__': + crash() -- 2.28.0