def test_expr(expr, allowed_codes):
try:
c = compile(expr, "", "eval")
except:
raise ValueError, "%s is not a valid expression" % expr
codes, names = _get_opcodes(c)
for code in codes:
if code not in allowed_codes:
for n in names:
if n not in _load_names:
raise ValueError, "opcode %s not allowed" % dis.opname[code]
return c
评论列表
文章目录