From d11e460296fa5ea76d2520d4d4f2355eab98a0a0 Mon Sep 17 00:00:00 2001 From: "Jay (OpenERP)" <jvo@tinyerp.com> Date: Mon, 18 Oct 2010 15:48:30 +0530 Subject: [PATCH] [FIX] Safe_eval : Added the support of set(),JUMP_FORWARD,POP_BLOCK,SETUP_LOOP lp bug: https://launchpad.net/bugs/633896 fixed bzr revid: jvo@tinyerp.com-20101018101830-e2fa0ch3811gsuuu --- bin/tools/safe_eval.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/bin/tools/safe_eval.py b/bin/tools/safe_eval.py index fa6e04bf92cb..476ffe5e5a99 100644 --- a/bin/tools/safe_eval.py +++ b/bin/tools/safe_eval.py @@ -40,7 +40,7 @@ import os __all__ = ['test_expr', 'literal_eval', 'safe_eval', 'const_eval', 'ext_eval' ] _CONST_OPCODES = set(opmap[x] for x in [ - 'POP_TOP', 'ROT_TWO', 'ROT_THREE', 'ROT_FOUR', 'DUP_TOP', + 'POP_TOP', 'ROT_TWO', 'ROT_THREE', 'ROT_FOUR', 'DUP_TOP','POP_BLOCK','SETUP_LOOP', 'BUILD_LIST', 'BUILD_MAP', 'BUILD_TUPLE', 'LOAD_CONST', 'RETURN_VALUE', 'STORE_SUBSCR'] if x in opmap) @@ -55,7 +55,7 @@ _EXPR_OPCODES = _CONST_OPCODES.union(set(opmap[x] for x in [ _SAFE_OPCODES = _EXPR_OPCODES.union(set(opmap[x] for x in [ 'STORE_MAP', 'LOAD_NAME', 'CALL_FUNCTION', 'COMPARE_OP', 'LOAD_ATTR', 'STORE_NAME', 'GET_ITER', 'FOR_ITER', 'LIST_APPEND', 'JUMP_ABSOLUTE', - 'DELETE_NAME', 'JUMP_IF_TRUE', 'JUMP_IF_FALSE','MAKE_FUNCTION', + 'DELETE_NAME', 'JUMP_IF_TRUE', 'JUMP_IF_FALSE','MAKE_FUNCTION','JUMP_FORWARD' ] if x in opmap)) _logger = logging.getLogger('safe_eval') @@ -264,7 +264,8 @@ def safe_eval(expr, globals_dict=None, locals_dict=None, mode="eval", nocopy=Fal 'reduce': reduce, 'filter': filter, 'round': round, - 'len': len + 'len': len, + 'set' : set } ) return eval(test_expr(expr,_SAFE_OPCODES, mode=mode), globals_dict, locals_dict) -- GitLab