From 2494bfdc8626aadb7d3197d165daf2569f3a8db1 Mon Sep 17 00:00:00 2001 From: Scott Shawcroft Date: Tue, 25 Jun 2019 17:54:27 -0700 Subject: Validate raw code and mpy read length --- py/emitglue.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'py/emitglue.c') diff --git a/py/emitglue.c b/py/emitglue.c index 74bf8ddca..7708689dd 100644 --- a/py/emitglue.c +++ b/py/emitglue.c @@ -142,11 +142,12 @@ mp_obj_t mp_make_function_from_raw_code(const mp_raw_code_t *rc, mp_obj_t def_ar fun = mp_obj_new_fun_asm(rc->n_pos_args, rc->data.u_native.fun_data, rc->data.u_native.type_sig); break; #endif - default: - // rc->kind should always be set and BYTECODE is the only remaining case - assert(rc->kind == MP_CODE_BYTECODE); + case MP_CODE_BYTECODE: fun = mp_obj_new_fun_bc(def_args, def_kw_args, rc->data.u_byte.bytecode, rc->data.u_byte.const_table); break; + default: + // All other kinds are invalid. + mp_raise_RuntimeError(translate("Corrupt raw code")); } // check for generator functions and if so wrap in generator object -- cgit v1.2.3