|
@@ -1324,6 +1324,12 @@ def bold(text): |
|
|
|
|
|
|
|
|
def safe_eval(code, eval_globals=None, eval_locals=None): |
|
|
def safe_eval(code, eval_globals=None, eval_locals=None): |
|
|
'''A safer `eval`''' |
|
|
'''A safer `eval`''' |
|
|
|
|
|
whitelisted_globals = { |
|
|
|
|
|
"int": int, |
|
|
|
|
|
"float": float, |
|
|
|
|
|
"long": long |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
if '__' in code: |
|
|
if '__' in code: |
|
|
throw('Illegal rule {0}. Cannot use "__"'.format(bold(code))) |
|
|
throw('Illegal rule {0}. Cannot use "__"'.format(bold(code))) |
|
|
|
|
|
|
|
@@ -1331,4 +1337,6 @@ def safe_eval(code, eval_globals=None, eval_locals=None): |
|
|
eval_globals = {} |
|
|
eval_globals = {} |
|
|
eval_globals['__builtins__'] = {} |
|
|
eval_globals['__builtins__'] = {} |
|
|
|
|
|
|
|
|
|
|
|
eval_globals.update(whitelisted_globals) |
|
|
|
|
|
|
|
|
return eval(code, eval_globals, eval_locals) |
|
|
return eval(code, eval_globals, eval_locals) |