~eoc/openobject-server/6.1

« back to all changes in this revision

Viewing changes to openerp/tools/safe_eval.py

  • Committer: Mariano Ruiz
  • Date: 2014-11-12 19:54:47 UTC
  • Revision ID: mrsarm@gmail.com-20141112195447-fxwuuoj9ai2c3tbx
[FIX] tools: restrict available attributes (manual merge #6690e681)

Show diffs side-by-side

added added

removed removed

Lines of Context:
43
43
# lp:703841), does import time.
44
44
_ALLOWED_MODULES = ['_strptime', 'time']
45
45
 
 
46
_UNSAFE_ATTRIBUTES = ['f_builtins', 'f_globals', 'f_locals', 'gi_frame',
 
47
                      'co_code', 'func_globals']
 
48
 
46
49
_CONST_OPCODES = set(opmap[x] for x in [
47
50
    'POP_TOP', 'ROT_TWO', 'ROT_THREE', 'ROT_FOUR', 'DUP_TOP', 'DUP_TOPX',
48
51
    'POP_BLOCK','SETUP_LOOP', 'BUILD_LIST', 'BUILD_MAP', 'BUILD_TUPLE',
113
116
    .. note:: actually forbids every name containing 2 underscores
114
117
    """
115
118
    for name in code_obj.co_names:
116
 
        if "__" in name:
 
119
        if "__" in name or name in _UNSAFE_ATTRIBUTES:
117
120
            raise NameError('Access to forbidden name %r (%r)' % (name, expr))
118
121
 
119
122
def assert_valid_codeobj(allowed_codes, code_obj, expr):